30
30
31
31
#define mp_obj_fat_vfs_t fs_user_mount_t
32
32
33
+ // Factoring this common call saves about 90 bytes.
34
+ STATIC NORETURN void mp_raise_OSError_fresult (FRESULT res ) {
35
+ mp_raise_OSError (fresult_to_errno_table [res ]);
36
+ }
37
+
33
38
STATIC mp_import_stat_t fat_vfs_import_stat (void * vfs_in , const char * path ) {
34
39
fs_user_mount_t * vfs = vfs_in ;
35
40
FILINFO fno ;
@@ -64,7 +69,7 @@ STATIC mp_obj_t fat_vfs_make_new(const mp_obj_type_t *type, size_t n_args, size_
64
69
// don't error out if no filesystem, to let mkfs()/mount() create one if wanted
65
70
vfs -> blockdev .flags |= MP_BLOCKDEV_FLAG_NO_FILESYSTEM ;
66
71
} else if (res != FR_OK ) {
67
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
72
+ mp_raise_OSError_fresult ( res );
68
73
}
69
74
70
75
return MP_OBJ_FROM_PTR (vfs );
@@ -97,7 +102,7 @@ STATIC mp_obj_t fat_vfs_mkfs(mp_obj_t bdev_in) {
97
102
res = f_mkfs (& vfs -> fatfs , FM_FAT32 , 0 , working_buf , sizeof (working_buf ));
98
103
}
99
104
if (res != FR_OK ) {
100
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
105
+ mp_raise_OSError_fresult ( res );
101
106
}
102
107
103
108
return mp_const_none<
427E
/span>;
@@ -172,7 +177,7 @@ STATIC mp_obj_t fat_vfs_ilistdir_func(size_t n_args, const mp_obj_t *args) {
172
177
iter -> is_str = is_str_type ;
173
178
FRESULT res = f_opendir (& self -> fatfs , & iter -> dir , path );
174
179
if (res != FR_OK ) {
175
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
180
+ mp_raise_OSError_fresult ( res );
176
181
}
177
182
178
183
return MP_OBJ_FROM_PTR (iter );
@@ -188,15 +193,15 @@ STATIC mp_obj_t fat_vfs_remove_internal(mp_obj_t vfs_in, mp_obj_t path_in, mp_in
188
193
C94A
FRESULT res = f_stat (& self -> fatfs , path , & fno );
189
194
190
195
if (res != FR_OK ) {
191
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
196
+ mp_raise_OSError_fresult ( res );
192
197
}
193
198
194
199
// check if path is a file or directory
195
200
if ((fno .fattrib & AM_DIR ) == attr ) {
196
201
res = f_unlink (& self -> fatfs , path );
197
202
198
203
if (res != FR_OK ) {
199
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
204
+ mp_raise_OSError_fresult ( res );
200
205
}
201
206
return mp_const_none ;
202
207
} else {
@@ -226,7 +231,7 @@ STATIC mp_obj_t fat_vfs_rename(mp_obj_t vfs_in, mp_obj_t path_in, mp_obj_t path_
226
231
FILINFO fno ;
227
232
FRESULT res = f_stat (& self -> fatfs , old_path , & fno );
228
233
if (res != FR_OK ) {
229
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
234
+ mp_raise_OSError_fresult ( res );
230
235
}
231
236
if ((fno .fattrib & AM_DIR ) != 0 &&
232
237
strlen (new_path ) > strlen (old_path ) &&
@@ -245,7 +250,7 @@ STATIC mp_obj_t fat_vfs_rename(mp_obj_t vfs_in, mp_obj_t path_in, mp_obj_t path_
245
250
if (res == FR_OK ) {
246
251
return mp_const_none ;
247
252
} else {
248
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
253
+ mp_raise_OSError_fresult ( res );
249
254
}
250
255
251
256
}
@@ -259,7 +264,7 @@ STATIC mp_obj_t fat_vfs_mkdir(mp_obj_t vfs_in, mp_obj_t path_o) {
259
264
if (res == FR_OK ) {
260
265
return mp_const_none ;
261
266
} else {
262
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
267
+ mp_raise_OSError_fresult ( res );
263
268
}
264
269
}
265
270
STATIC MP_DEFINE_CONST_FUN_OBJ_2 (fat_vfs_mkdir_obj , fat_vfs_mkdir );
@@ -273,7 +278,7 @@ STATIC mp_obj_t fat_vfs_chdir(mp_obj_t vfs_in, mp_obj_t path_in) {
273
278
FRESULT res = f_chdir (& self -> fatfs , path );
274
279
275
280
if (res != FR_OK ) {
276
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
281
+ mp_raise_OSError_fresult ( res );
277
282
}
278
283
279
284
return mp_const_none ;
@@ -286,7 +291,7 @@ STATIC mp_obj_t fat_vfs_getcwd(mp_obj_t vfs_in) {
286
291
char buf [MICROPY_ALLOC_PATH_MAX + 1 ];
287
292
FRESULT res = f_getcwd (& self -> fatfs , buf , sizeof (buf ));
288
293
if (res != FR_OK ) {
289
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
294
+ mp_raise_OSError_fresult ( res );
290
295
}
291
296
return mp_obj_new_str (buf , strlen (buf ));
292
297
}
@@ -307,7 +312,7 @@ STATIC mp_obj_t fat_vfs_stat(mp_obj_t vfs_in, mp_obj_t path_in) {
307
312
} else {
308
313
FRESULT res = f_stat (& self -> fatfs , path , & fno );
309
314
if (res != FR_OK ) {
310
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
315
+ mp_raise_OSError_fresult ( res );
311
316
}
312
317
}
313
318
@@ -357,7 +362,7 @@ STATIC mp_obj_t fat_vfs_statvfs(mp_obj_t vfs_in, mp_obj_t path_in) {
357
362
FATFS * fatfs = & self -> fatfs ;
358
363
FRESULT res = f_getfree (fatfs , & nclst );
359
364
if (FR_OK != res ) {
360
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
365
+ mp_raise_OSError_fresult ( res );
361
366
}
362
367
363
368
mp_obj_tuple_t * t = MP_OBJ_TO_PTR (mp_obj_new_tuple (10 , NULL ));
@@ -395,7 +400,7 @@ STATIC mp_obj_t vfs_fat_mount(mp_obj_t self_in, mp_obj_t readonly, mp_obj_t mkfs
395
400
res = f_mkfs (& self -> fatfs , FM_FAT | FM_SFD , 0 , working_buf , sizeof (working_buf ));
396
401
}
397
402
if (res != FR_OK ) {
398
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
403
+ mp_raise_OSError_fresult ( res );
399
404
}
400
405
self -> blockdev .flags &= ~MP_BLOCKDEV_FLAG_NO_FILESYSTEM ;
401
406
@@ -416,7 +421,7 @@ STATIC mp_obj_t vfs_fat_getlabel(mp_obj_t self_in) {
416
421
char working_buf [12 ];
417
422
FRESULT res = f_getlabel (& self -> fatfs , working_buf , NULL );
418
423
if (res != FR_OK ) {
419
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
424
+ mp_raise_OSError_fresult ( res );
420
425
}
421
426
return mp_obj_new_str (working_buf , strlen (working_buf ));
422
427
}
@@ -431,7 +436,7 @@ STATIC mp_obj_t vfs_fat_setlabel(mp_obj_t self_in, mp_obj_t label_in) {
431
436
if (res == FR_WRITE_PROTECTED ) {
432
437
mp_raise_msg (& mp_type_OSError , MP_ERROR_TEXT ("Read-only filesystem" ));
433
438
}
434
- mp_raise_OSError ( fresult_to_errno_table [ res ] );
439
+ mp_raise_OSError_fresult ( res );
435
440
}
436
441
return mp_const_none ;
437
442
}
0 commit comments