summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorWilliam Wilgus <wilgus.william@gmail.com>2022-03-03 07:37:03 -0500
committerWilliam Wilgus <wilgus.william@gmail.com>2022-03-03 18:58:07 -0500
commit9daacabd658508d2607a64b288c9bce7a635fb15 (patch)
treece96538ea82a4176f00f8eb9531711db7dea5750 /firmware/export
parentf88ea12bacf381ad4f39ba2328c806e772c0dda8 (diff)
downloadrockbox-9daacabd658508d2607a64b288c9bce7a635fb15.tar.gz
rockbox-9daacabd658508d2607a64b288c9bce7a635fb15.zip
[RESTORED!] Allow mounting of any directory as the root directory.
Provide definitions for the macros: * RB_ROOT_VOL_HIDDEN(v) to exclude certain items from the root. * RB_ROOT_CONTENTS to return a string with the name of the directory to mount in the root. Defaults are in export/rbpaths.h It's a bit much for those that don't need the full functionality. Some conditional define can cut it back a lot to cut out things only needed if alternate root mounts are required. I'm just not bothering yet. The basic concept would be applied to all targets to keep file code from forking too much. Change-Id: I3b5a14c530ff4b10d97f67636237d96875eb8969 Author: Michael Sevakis
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/mv.h4
-rw-r--r--firmware/export/pathfuncs.h6
-rw-r--r--firmware/export/rbpaths.h3
3 files changed, 13 insertions, 0 deletions
diff --git a/firmware/export/mv.h b/firmware/export/mv.h
index 3657ef6c98..08daf50b34 100644
--- a/firmware/export/mv.h
+++ b/firmware/export/mv.h
@@ -87,6 +87,10 @@
87#define VOL_MAX_LEN (1 + VOL_DEC_MAX_LEN + 2 + 1) 87#define VOL_MAX_LEN (1 + VOL_DEC_MAX_LEN + 2 + 1)
88#define VOL_NUM_MAX 100 88#define VOL_NUM_MAX 100
89 89
90#ifndef ROOT_VOLUME
91#define ROOT_VOLUME INT_MAX
92#endif
93
90#else /* empty definitions if no multi-volume */ 94#else /* empty definitions if no multi-volume */
91#define IF_MV(x...) 95#define IF_MV(x...)
92#define IF_MV_NONVOID(x...) void 96#define IF_MV_NONVOID(x...) void
diff --git a/firmware/export/pathfuncs.h b/firmware/export/pathfuncs.h
index 350dd4e548..385d534714 100644
--- a/firmware/export/pathfuncs.h
+++ b/firmware/export/pathfuncs.h
@@ -30,10 +30,15 @@
30/* useful char constants that could be reconfigured if desired */ 30/* useful char constants that could be reconfigured if desired */
31#define PATH_SEPCH '/' 31#define PATH_SEPCH '/'
32#define PATH_SEPSTR "/" 32#define PATH_SEPSTR "/"
33#define PATH_ROOTCHR '/'
33#define PATH_ROOTSTR "/" 34#define PATH_ROOTSTR "/"
34#define PATH_BADSEPCH '\\' 35#define PATH_BADSEPCH '\\'
35#define PATH_DRVSEPCH ':' 36#define PATH_DRVSEPCH ':'
36 37
38#ifndef ROOT_VOLUME
39#define ROOT_VOLUME INT_MAX
40#endif
41
37/* a nicer way to check for "." and ".." than two strcmp() calls */ 42/* a nicer way to check for "." and ".." than two strcmp() calls */
38static inline bool is_dotdir_name(const char *name) 43static inline bool is_dotdir_name(const char *name)
39{ 44{
@@ -75,6 +80,7 @@ static inline bool name_is_dot_dot(const char *name)
75#ifdef HAVE_MULTIVOLUME 80#ifdef HAVE_MULTIVOLUME
76int path_strip_volume(const char *name, const char **nameptr, bool greedy); 81int path_strip_volume(const char *name, const char **nameptr, bool greedy);
77int get_volume_name(int volume, char *name); 82int get_volume_name(int volume, char *name);
83int make_volume_root(int volume, char *dst);
78#endif 84#endif
79 85
80int path_strip_drive(const char *name, const char **nameptr, bool greedy); 86int path_strip_drive(const char *name, const char **nameptr, bool greedy);
diff --git a/firmware/export/rbpaths.h b/firmware/export/rbpaths.h
index a3042d80bc..9dd0a24c6f 100644
--- a/firmware/export/rbpaths.h
+++ b/firmware/export/rbpaths.h
@@ -52,6 +52,9 @@
52#define PLUGIN_DIR ROCKBOX_DIR "/rocks" 52#define PLUGIN_DIR ROCKBOX_DIR "/rocks"
53#define CODECS_DIR ROCKBOX_DIR "/codecs" 53#define CODECS_DIR ROCKBOX_DIR "/codecs"
54 54
55#define RB_ROOT_VOL_HIDDEN(v) (IF_MV_VOL(v) == 0)
56#define RB_ROOT_CONTENTS_DIR "/" IF_MV("<0>")
57
55#else /* APPLICATION */ 58#else /* APPLICATION */
56 59
57#define HOME_DIR "<HOME>" /* replaced at runtime */ 60#define HOME_DIR "<HOME>" /* replaced at runtime */