(Fexpand_file_name): In the no-handler case, after

expanding, look again for a handler and invoke it.  This is needed
for filenames like "/foo/../user@host:/bar/../baz" -- the first
expansion produces "/user@host:/bar/../baz" which needs to be
expanded again for the finame result "/user@host:/baz".
This commit is contained in:
Kai Großjohann 2003-03-29 16:34:35 +00:00
parent 753ad98890
commit beb402deed
2 changed files with 22 additions and 3 deletions

View file

@ -1,3 +1,11 @@
2003-03-29 Kai Gro,A_(Bjohann <kai.grossjohann@gmx.net>
* fileio.c (Fexpand_file_name): In the no-handler case, after
expanding, look again for a handler and invoke it. This is needed
for filenames like "/foo/../user@host:/bar/../baz" -- the first
expansion produces "/user@host:/bar/../baz" which needs to be
expanded again for the finame result "/user@host:/baz".
2003-03-28 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* gtkutil.c (xg_tool_bar_item_expose_callback): Reduce size

View file

@ -1026,7 +1026,7 @@ See also the function `substitute-in-file-name'. */)
int is_escaped = 0;
#endif /* DOS_NT */
int length;
Lisp_Object handler;
Lisp_Object handler, result;
CHECK_STRING (name);
@ -1678,8 +1678,19 @@ See also the function `substitute-in-file-name'. */)
CORRECT_DIR_SEPS (target);
#endif /* DOS_NT */
return make_specified_string (target, -1, o - target,
STRING_MULTIBYTE (name));
result = make_specified_string (target, -1, o - target,
STRING_MULTIBYTE (name));
/* Again look to see if the file name has special constructs in it
and perhaps call the corresponding file handler. This is needed
for filenames such as "/foo/../user@host:/bar/../baz". Expanding
the ".." component gives us "/user@host:/bar/../baz" which needs
to be expanded again. */
handler = Ffind_file_name_handler (result, Qexpand_file_name);
if (!NILP (handler))
return call3 (handler, Qexpand_file_name, result, default_directory);
return result;
}
#if 0