3636#if MICROPY_VFS
3737
3838// ROOT is 0 so that the default current directory is the root directory
39- #define VFS_NONE ((vfs_mount_t*)1)
40- #define VFS_ROOT ((vfs_mount_t*)0)
41-
42- typedef struct _vfs_mount_t {
43- const char * str ; // mount point with leading /
44- size_t len ;
45- mp_obj_t obj ;
46- struct _vfs_mount_t * next ;
47- } vfs_mount_t ;
39+ #define VFS_NONE ((mp_vfs_mount_t*)1)
40+ #define VFS_ROOT ((mp_vfs_mount_t*)0)
4841
4942// path is the path to lookup and *path_out holds the path within the VFS
5043// object (starts with / if an absolute path).
5144// Returns VFS_ROOT for root dir (and then path_out is undefined) and VFS_NONE
5245// for path not found.
53- STATIC vfs_mount_t * lookup_path_raw (const char * path , const char * * path_out ) {
46+ STATIC mp_vfs_mount_t * lookup_path_raw (const char * path , const char * * path_out ) {
5447 if (path [0 ] == '/' && path [1 ] == 0 ) {
5548 return VFS_ROOT ;
5649 } else if (MP_STATE_VM (vfs_cur ) == VFS_ROOT ) {
@@ -64,7 +57,7 @@ STATIC vfs_mount_t *lookup_path_raw(const char *path, const char **path_out) {
6457 return MP_STATE_VM (vfs_cur );
6558 }
6659
67- for (vfs_mount_t * vfs = MP_STATE_VM (vfs_mount_table ); vfs != NULL ; vfs = vfs -> next ) {
60+ for (mp_vfs_mount_t * vfs = MP_STATE_VM (vfs_mount_table ); vfs != NULL ; vfs = vfs -> next ) {
6861 if (strncmp (path , vfs -> str , vfs -> len ) == 0 ) {
6962 if (path [vfs -> len ] == '/' ) {
7063 * path_out = path + vfs -> len ;
@@ -81,18 +74,18 @@ STATIC vfs_mount_t *lookup_path_raw(const char *path, const char **path_out) {
8174}
8275
8376// Version of lookup_path_raw that takes and returns uPy string objects.
84- STATIC vfs_mount_t * lookup_path (mp_obj_t path_in , mp_obj_t * path_out ) {
77+ STATIC mp_vfs_mount_t * lookup_path (mp_obj_t path_in , mp_obj_t * path_out ) {
8578 const char * path = mp_obj_str_get_str (path_in );
8679 const char * p_out ;
87- vfs_mount_t * vfs = lookup_path_raw (path , & p_out );
80+ mp_vfs_mount_t * vfs = lookup_path_raw (path , & p_out );
8881 if (vfs != VFS_NONE && vfs != VFS_ROOT ) {
8982 * path_out = mp_obj_new_str_of_type (mp_obj_get_type (path_in ),
9083 (const byte * )p_out , strlen (p_out ));
9184 }
9285 return vfs ;
9386}
9487
95- STATIC mp_obj_t mp_vfs_proxy_call (vfs_mount_t * vfs , qstr meth_name , size_t n_args , const mp_obj_t * args ) {
88+ STATIC mp_obj_t mp_vfs_proxy_call (mp_vfs_mount_t * vfs , qstr meth_name , size_t n_args , const mp_obj_t * args ) {
9689 if (vfs == VFS_NONE ) {
9790 // mount point not found
9891 mp_raise_OSError (MP_ENODEV );
@@ -111,7 +104,7 @@ STATIC mp_obj_t mp_vfs_proxy_call(vfs_mount_t *vfs, qstr meth_name, size_t n_arg
111104
112105mp_import_stat_t mp_vfs_import_stat (const char * path ) {
113106 const char * path_out ;
114- vfs_mount_t * vfs = lookup_path_raw (path , & path_out );
107+ mp_vfs_mount_t * vfs = lookup_path_raw (path , & path_out );
115108 if (vfs == VFS_NONE || vfs == VFS_ROOT ) {
116109 return MP_IMPORT_STAT_NO_EXIST ;
117110 }
@@ -141,7 +134,7 @@ mp_obj_t mp_vfs_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args
141134 const char * mnt_str = mp_obj_str_get_data (pos_args [1 ], & mnt_len );
142135
143136 // create new object
144- vfs_mount_t * vfs = m_new_obj (vfs_mount_t );
137+ mp_vfs_mount_t * vfs = m_new_obj (mp_vfs_mount_t );
145138 vfs -> str = mnt_str ;
146139 vfs -> len = mnt_len ;
147140 vfs -> obj = pos_args [0 ];
@@ -157,7 +150,7 @@ mp_obj_t mp_vfs_mount(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args
157150 }
158151
159152 // insert the vfs into the mount table
160- vfs_mount_t * * vfsp = & MP_STATE_VM (vfs_mount_table );
153+ mp_vfs_mount_t * * vfsp = & MP_STATE_VM (vfs_mount_table );
161154 while (* vfsp != NULL ) {
162155 vfsp = & (* vfsp )-> next ;
163156 }
@@ -169,13 +162,13 @@ MP_DEFINE_CONST_FUN_OBJ_KW(mp_vfs_mount_obj, 2, mp_vfs_mount);
169162
170163mp_obj_t mp_vfs_umount (mp_obj_t mnt_in ) {
171164 // remove vfs from the mount table
172- vfs_mount_t * vfs = NULL ;
165+ mp_vfs_mount_t * vfs = NULL ;
173166 mp_uint_t mnt_len ;
174167 const char * mnt_str = NULL ;
175168 if (MP_OBJ_IS_STR (mnt_in )) {
176169 mnt_str = mp_obj_str_get_data (mnt_in , & mnt_len );
177170 }
178- for (vfs_mount_t * * vfsp = & MP_STATE_VM (vfs_mount_table ); * vfsp != NULL ; vfsp = & (* vfsp )-> next ) {
171+ for (mp_vfs_mount_t * * vfsp = & MP_STATE_VM (vfs_mount_table ); * vfsp != NULL ; vfsp = & (* vfsp )-> next ) {
179172 if ((mnt_str != NULL && !memcmp (mnt_str , (* vfsp )-> str , mnt_len + 1 )) || (* vfsp )-> obj == mnt_in ) {
180173 vfs = * vfsp ;
181174 * vfsp = (* vfsp )-> next ;
@@ -210,14 +203,14 @@ mp_obj_t mp_vfs_open(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args)
210203 mp_arg_val_t args [MP_ARRAY_SIZE (allowed_args )];
211204 mp_arg_parse_all (n_args , pos_args , kw_args , MP_ARRAY_SIZE (allowed_args ), allowed_args , args );
212205
213- vfs_mount_t * vfs = lookup_path ((mp_obj_t )args [ARG_file ].u_rom_obj , & args [ARG_file ].u_obj );
206+ mp_vfs_mount_t * vfs = lookup_path ((mp_obj_t )args [ARG_file ].u_rom_obj , & args [ARG_file ].u_obj );
214207 return mp_vfs_proxy_call (vfs , MP_QSTR_open , 2 , (mp_obj_t * )& args );
215208}
216209MP_DEFINE_CONST_FUN_OBJ_KW (mp_vfs_open_obj , 0 , mp_vfs_open );
217210
218211mp_obj_t mp_vfs_chdir (mp_obj_t path_in ) {
219212 mp_obj_t path_out ;
220- vfs_mount_t * vfs = lookup_path (path_in , & path_out );
213+ mp_vfs_mount_t * vfs = lookup_path (path_in , & path_out );
221214 if (vfs != VFS_ROOT ) {
222215 mp_vfs_proxy_call (vfs , MP_QSTR_chdir , 1 , & path_out );
223216 }
@@ -251,7 +244,7 @@ mp_obj_t mp_vfs_listdir(size_t n_args, const mp_obj_t *args) {
251244 }
252245
253246 mp_obj_t path_out ;
254- vfs_mount_t * vfs = lookup_path (path_in , & path_out );
247+ mp_vfs_mount_t * vfs = lookup_path (path_in , & path_out );
255248
256249 if (vfs == VFS_ROOT ) {
257250 // list the root directory
@@ -269,22 +262,22 @@ MP_DEFINE_CONST_FUN_OBJ_VAR_BETWEEN(mp_vfs_listdir_obj, 0, 1, mp_vfs_listdir);
269262
270263mp_obj_t mp_vfs_mkdir (mp_obj_t path_in ) {
271264 mp_obj_t path_out ;
272- vfs_mount_t * vfs = lookup_path (path_in , & path_out );
265+ mp_vfs_mount_t * vfs = lookup_path (path_in , & path_out );
273266 return mp_vfs_proxy_call (vfs , MP_QSTR_mkdir , 1 , & path_out );
274267}
275268MP_DEFINE_CONST_FUN_OBJ_1 (mp_vfs_mkdir_obj , mp_vfs_mkdir );
276269
277270mp_obj_t mp_vfs_remove (mp_obj_t path_in ) {
278271 mp_obj_t path_out ;
279- vfs_mount_t * vfs = lookup_path (path_in , & path_out );
272+ mp_vfs_mount_t * vfs = lookup_path (path_in , & path_out );
280273 return mp_vfs_proxy_call (vfs , MP_QSTR_remove , 1 , & path_out );
281274}
282275MP_DEFINE_CONST_FUN_OBJ_1 (mp_vfs_remove_obj , mp_vfs_remove );
283276
284277mp_obj_t mp_vfs_rename (mp_obj_t old_path_in , mp_obj_t new_path_in ) {
285278 mp_obj_t args [2 ];
286- vfs_mount_t * old_vfs = lookup_path (old_path_in , & args [0 ]);
287- vfs_mount_t * new_vfs = lookup_path (new_path_in , & args [1 ]);
279+ mp_vfs_mount_t * old_vfs = lookup_path (old_path_in , & args [0 ]);
280+ mp_vfs_mount_t * new_vfs = lookup_path (new_path_in , & args [1 ]);
288281 if (old_vfs != new_vfs ) {
289282 // can't rename across filesystems
290283 mp_raise_OSError (MP_EPERM );
@@ -295,21 +288,21 @@ MP_DEFINE_CONST_FUN_OBJ_2(mp_vfs_rename_obj, mp_vfs_rename);
295288
296289mp_obj_t mp_vfs_rmdir (mp_obj_t path_in ) {
297290 mp_obj_t path_out ;
298- vfs_mount_t * vfs = lookup_path (path_in , & path_out );
291+ mp_vfs_mount_t * vfs = lookup_path (path_in , & path_out );
299292 return mp_vfs_proxy_call (vfs , MP_QSTR_rmdir , 1 , & path_out );
300293}
301294MP_DEFINE_CONST_FUN_OBJ_1 (mp_vfs_rmdir_obj , mp_vfs_rmdir );
302295
303296mp_obj_t mp_vfs_stat (mp_obj_t path_in ) {
304297 mp_obj_t path_out ;
305- vfs_mount_t * vfs = lookup_path (path_in , & path_out );
298+ mp_vfs_mount_t * vfs = lookup_path (path_in , & path_out );
306299 return mp_vfs_proxy_call (vfs , MP_QSTR_stat , 1 , & path_out );
307300}
308301MP_DEFINE_CONST_FUN_OBJ_1 (mp_vfs_stat_obj , mp_vfs_stat );
309302
310303mp_obj_t mp_vfs_statvfs (mp_obj_t path_in ) {
311304 mp_obj_t path_out ;
312- vfs_mount_t * vfs = lookup_path (path_in , & path_out );
305+ mp_vfs_mount_t * vfs = lookup_path (path_in , & path_out );
313306 return mp_vfs_proxy_call (vfs , MP_QSTR_statvfs , 1 , & path_out );
314307}
315308MP_DEFINE_CONST_FUN_OBJ_1 (mp_vfs_statvfs_obj , mp_vfs_statvfs );
0 commit comments