diff options
Diffstat (limited to 'firmware/include/dircache_redirect.h')
-rw-r--r-- | firmware/include/dircache_redirect.h | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/firmware/include/dircache_redirect.h b/firmware/include/dircache_redirect.h index 9fae16b551..d7b9626c01 100644 --- a/firmware/include/dircache_redirect.h +++ b/firmware/include/dircache_redirect.h | |||
@@ -20,7 +20,10 @@ | |||
20 | ****************************************************************************/ | 20 | ****************************************************************************/ |
21 | #ifndef _DIRCACHE_REDIRECT_H_ | 21 | #ifndef _DIRCACHE_REDIRECT_H_ |
22 | 22 | ||
23 | #include "rbpaths.h" | ||
24 | #include "pathfuncs.h" | ||
23 | #include "dir.h" | 25 | #include "dir.h" |
26 | #include "dircache.h" | ||
24 | 27 | ||
25 | /*** | 28 | /*** |
26 | ** Internal redirects that depend upon whether or not dircache is made | 29 | ** Internal redirects that depend upon whether or not dircache is made |
@@ -123,10 +126,20 @@ static inline void fileop_onsync_internal(struct filestr_base *stream) | |||
123 | 126 | ||
124 | static inline void volume_onmount_internal(IF_MV_NONVOID(int volume)) | 127 | static inline void volume_onmount_internal(IF_MV_NONVOID(int volume)) |
125 | { | 128 | { |
129 | #ifdef HAVE_MULTIVOLUME | ||
130 | char path[VOL_MAX_LEN+2]; | ||
131 | make_volume_root(volume, path); | ||
132 | #else | ||
133 | const char *path = PATH_ROOTSTR; | ||
134 | #endif | ||
135 | root_mount_path(path, RB_ROOT_VOL_HIDDEN(volume) ? NSITEM_HIDDEN : 0); | ||
136 | #ifdef HAVE_MULTIVOLUME | ||
137 | if (volume == path_strip_volume(RB_ROOT_CONTENTS_DIR, NULL, false)) | ||
138 | #endif | ||
139 | root_mount_path(RB_ROOT_CONTENTS_DIR, NSITEM_CONTENTS); | ||
126 | #ifdef HAVE_DIRCACHE | 140 | #ifdef HAVE_DIRCACHE |
127 | dircache_mount(); | 141 | dircache_mount(); |
128 | #endif | 142 | #endif |
129 | IF_MV( (void)volume; ) | ||
130 | } | 143 | } |
131 | 144 | ||
132 | static inline void volume_onunmount_internal(IF_MV_NONVOID(int volume)) | 145 | static inline void volume_onunmount_internal(IF_MV_NONVOID(int volume)) |
@@ -135,6 +148,7 @@ static inline void volume_onunmount_internal(IF_MV_NONVOID(int volume)) | |||
135 | /* First, to avoid update of something about to be destroyed anyway */ | 148 | /* First, to avoid update of something about to be destroyed anyway */ |
136 | dircache_unmount(IF_MV(volume)); | 149 | dircache_unmount(IF_MV(volume)); |
137 | #endif | 150 | #endif |
151 | root_unmount_volume(IF_MV(volume)); | ||
138 | fileobj_mgr_unmount(IF_MV(volume)); | 152 | fileobj_mgr_unmount(IF_MV(volume)); |
139 | } | 153 | } |
140 | 154 | ||
@@ -152,7 +166,7 @@ static inline void fileop_onunmount_internal(struct filestr_base *stream) | |||
152 | 166 | ||
153 | static inline int readdir_dirent(struct filestr_base *stream, | 167 | static inline int readdir_dirent(struct filestr_base *stream, |
154 | struct dirscan_info *scanp, | 168 | struct dirscan_info *scanp, |
155 | struct dirent *entry) | 169 | struct DIRENT *entry) |
156 | { | 170 | { |
157 | #ifdef HAVE_DIRCACHE | 171 | #ifdef HAVE_DIRCACHE |
158 | return dircache_readdir_dirent(stream, scanp, entry); | 172 | return dircache_readdir_dirent(stream, scanp, entry); |