forked from mirrors/nixpkgs
40 lines
1 KiB
Diff
40 lines
1 KiB
Diff
|
From fea072084ff9d7c4d2c688059a2462bb0e59a2ec Mon Sep 17 00:00:00 2001
|
||
|
From: K Henriksson <kthenriksson@gmail.com>
|
||
|
Date: Wed, 27 Aug 2014 21:55:18 -0700
|
||
|
Subject: [PATCH] Fix statfs operation
|
||
|
|
||
|
The statfs implementation does not properly translate names back to the
|
||
|
original, since the major encoding rewrite. This corrects that, and
|
||
|
should fix issue #27.
|
||
|
---
|
||
|
src/fuseops.c | 15 +++++++++++++--
|
||
|
1 file changed, 13 insertions(+), 2 deletions(-)
|
||
|
|
||
|
diff --git a/src/fuseops.c b/src/fuseops.c
|
||
|
index e7b4e7e..c333cbd 100644
|
||
|
--- a/src/fuseops.c
|
||
|
+++ b/src/fuseops.c
|
||
|
@@ -337,9 +337,20 @@ static int mp3fs_statfs(const char *path, struct statvfs *stbuf) {
|
||
|
if (!origpath) {
|
||
|
goto translate_fail;
|
||
|
}
|
||
|
-
|
||
|
+
|
||
|
+ /* pass-through for regular files */
|
||
|
+ if (statvfs(origpath, stbuf) == 0) {
|
||
|
+ goto passthrough;
|
||
|
+ } else {
|
||
|
+ /* Not really an error. */
|
||
|
+ errno = 0;
|
||
|
+ }
|
||
|
+
|
||
|
+ find_original(origpath);
|
||
|
+
|
||
|
statvfs(origpath, stbuf);
|
||
|
-
|
||
|
+
|
||
|
+passthrough:
|
||
|
free(origpath);
|
||
|
translate_fail:
|
||
|
return -errno;
|