summaryrefslogtreecommitdiffstats
path: root/patches/unfs3-0.9.22/0001-HACK-use-the-environment-variable-UNFS_BASE-as-root-.patch
blob: 846bcae3f7b8d338c81cb839ce03867a2f063e47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
From: Michael Olbrich <m.olbrich@pengutronix.de>
Date: Wed, 12 Sep 2012 09:24:54 +0200
Subject: [PATCH] HACK: use the environment variable UNFS_BASE as root
 directory

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
---
 backend_unix.h |  3 ++-
 readdir.c      | 16 ++++++++++++++++
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/backend_unix.h b/backend_unix.h
index 713288da5bef..62dad8336e83 100644
--- a/backend_unix.h
+++ b/backend_unix.h
@@ -23,6 +23,7 @@
 /*
  * system calls
  */
+char *realpath_unix(const char *path, char *resolved_path);
 #define backend_chmod chmod
 #define backend_chown chown
 #define backend_close close
@@ -49,7 +50,7 @@
 #define backend_pwrite pwrite
 #define backend_readdir readdir
 #define backend_readlink readlink
-#define backend_realpath realpath
+#define backend_realpath realpath_unix
 #define backend_remove remove
 #define backend_rename rename
 #define backend_rmdir rmdir
diff --git a/readdir.c b/readdir.c
index 0e7290c68ae8..53b0bfc9e7dd 100644
--- a/readdir.c
+++ b/readdir.c
@@ -213,3 +213,19 @@ READDIR3res read_dir(const char *path, cookie3 cookie, cookieverf3 verf,
 
     return result;
 }
+
+char *realpath_unix(const char *path, char *resolved_path)
+{
+    char *base = getenv("UNFS_BASE");
+    char *p;
+
+    if (base) {
+	p = malloc(strlen(base) + strlen(path) + 1);
+	strcpy(p, base);
+	strcat(p, path);
+	resolved_path = realpath(p, resolved_path);
+	free(p);
+	return resolved_path;
+    }
+    return realpath(path, resolved_path);
+}