summaryrefslogtreecommitdiff
path: root/libnetfs/dir-lookup.c
diff options
context:
space:
mode:
Diffstat (limited to 'libnetfs/dir-lookup.c')
-rw-r--r--libnetfs/dir-lookup.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libnetfs/dir-lookup.c b/libnetfs/dir-lookup.c
index 99a8746e..2d3da947 100644
--- a/libnetfs/dir-lookup.c
+++ b/libnetfs/dir-lookup.c
@@ -297,6 +297,7 @@ netfs_S_dir_lookup (struct protid *diruser,
if (register_translator)
{
char *translator_path = strdupa (relpath);
+ char *complete_path;
if (nextname != NULL)
{
/* This was not the last path component.
@@ -309,9 +310,17 @@ netfs_S_dir_lookup (struct protid *diruser,
translator_path[end - filename_start] = '\0';
}
+ if (diruser->po->path == NULL)
+ /* diruser is the root directory. */
+ complete_path = translator_path;
+ else
+ asprintf (&complete_path, "%s/%s", diruser->po->path, translator_path);
+
error = fshelp_set_active_translator (&newpi->pi,
- translator_path,
+ complete_path,
np->transbox.active);
+ if (complete_path != translator_path)
+ free(complete_path);
if (error)
{
ports_port_deref (newpi);