summaryrefslogtreecommitdiff
path: root/ulfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'ulfs.c')
-rw-r--r--ulfs.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/ulfs.c b/ulfs.c
index 3c565a5..2626a90 100644
--- a/ulfs.c
+++ b/ulfs.c
@@ -1,7 +1,10 @@
/* Hurd unionfs
- Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ Copyright (C) 2001, 2002, 2005, 2009 Free Software Foundation, Inc.
+
Written by Moritz Schulte <moritz@duesseldorf.ccc.de>.
+ Adapted for unionmount by Sergiu Ivanov <unlimitedscolobb@gmail.com>.
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
@@ -31,6 +34,7 @@
#include "lib.h"
#include "ulfs.h"
+#include "mount.h"
/* The start of the ulfs chain. */
ulfs_t *ulfs_chain_start;
@@ -212,14 +216,16 @@ ulfs_for_each_under_priv (char *path_under,
return err;
}
-/* Register a new underlying filesystem. */
+/* Register a new underlying filesystem. A null path refers to the
+ underlying filesystem; a path equal to an empty string refers to
+ the filesystem of the mountee. */
error_t
ulfs_register (char *path, int flags, int priority)
{
ulfs_t *ulfs;
error_t err;
- if (path)
+ if (path && path[0])
{
err = check_dir (path);
if (err)
@@ -261,7 +267,12 @@ ulfs_check ()
{
if (u->path)
- p = file_name_lookup (u->path, O_READ | O_DIRECTORY, 0);
+ {
+ if (!u->path[0])
+ p = mountee_root;
+ else
+ p = file_name_lookup (u->path, O_READ | O_DIRECTORY, 0);
+ }
else
p = underlying_node;