mirror of https://github.com/ARMmbed/mbed-os.git
commit
02af950f62
|
|
@ -35,39 +35,48 @@
|
||||||
static int fat_error_remap(FRESULT res)
|
static int fat_error_remap(FRESULT res)
|
||||||
{
|
{
|
||||||
switch(res) {
|
switch(res) {
|
||||||
case FR_OK: /* (0) Succeeded */
|
case FR_OK: // (0) Succeeded
|
||||||
return 0; /* no error */
|
return 0;
|
||||||
case FR_DISK_ERR: /* (1) A hard error occurred in the low level disk I/O layer */
|
case FR_DISK_ERR: // (1) A hard error occurred in the low level disk I/O layer
|
||||||
case FR_NOT_READY: /* (3) The physical drive cannot work */
|
return -EIO;
|
||||||
return -EIO; /* I/O error */
|
case FR_INT_ERR: // (2) Assertion failed
|
||||||
case FR_NO_FILE: /* (4) Could not find the file */
|
return -1;
|
||||||
case FR_NO_PATH: /* (5) Could not find the path */
|
case FR_NOT_READY: // (3) The physical drive cannot work
|
||||||
case FR_INVALID_NAME: /* (6) The path name format is invalid */
|
return -EIO;
|
||||||
case FR_INVALID_DRIVE: /* (11) The logical drive number is invalid */
|
case FR_NO_FILE: // (4) Could not find the file
|
||||||
case FR_NO_FILESYSTEM: /* (13) There is no valid FAT volume */
|
return -ENOENT;
|
||||||
return -ENOENT; /* No such file or directory */
|
case FR_NO_PATH: // (5) Could not find the path
|
||||||
case FR_DENIED: /* (7) Access denied due to prohibited access or directory full */
|
return -ENOTDIR;
|
||||||
return -EACCES; /* Permission denied */
|
case FR_INVALID_NAME: // (6) The path name format is invalid
|
||||||
case FR_EXIST: /* (8) Access denied due to prohibited access */
|
return -EINVAL;
|
||||||
return -EEXIST; /* File exists */
|
case FR_DENIED: // (7) Access denied due to prohibited access or directory full
|
||||||
case FR_WRITE_PROTECTED: /* (10) The physical drive is write protected */
|
return -EACCES;
|
||||||
case FR_LOCKED: /* (16) The operation is rejected according to the file sharing policy */
|
case FR_EXIST: // (8) Access denied due to prohibited access
|
||||||
return -EACCES; /* Permission denied */
|
return -EEXIST;
|
||||||
case FR_INVALID_OBJECT: /* (9) The file/directory object is invalid */
|
case FR_INVALID_OBJECT: // (9) The file/directory object is invalid
|
||||||
return -EFAULT; /* Bad address */
|
|
||||||
case FR_NOT_ENABLED: /* (12) The volume has no work area */
|
|
||||||
return -ENXIO; /* No such device or address */
|
|
||||||
case FR_NOT_ENOUGH_CORE: /* (17) LFN working buffer could not be allocated */
|
|
||||||
return -ENOMEM; /* Not enough space */
|
|
||||||
case FR_TOO_MANY_OPEN_FILES: /* (18) Number of open files > _FS_LOCK */
|
|
||||||
return -ENFILE; /* Too many open files in system */
|
|
||||||
case FR_INVALID_PARAMETER: /* (19) Given parameter is invalid */
|
|
||||||
return -ENOEXEC; /* Exec format error */
|
|
||||||
case FR_INT_ERR: /* (2) Assertion failed */
|
|
||||||
case FR_MKFS_ABORTED: /* (14) The f_mkfs() aborted due to any parameter error */
|
|
||||||
case FR_TIMEOUT: /* (15) Could not get a grant to access the volume within defined period */
|
|
||||||
default: /* Bad file number */
|
|
||||||
return -EBADF;
|
return -EBADF;
|
||||||
|
case FR_WRITE_PROTECTED: // (10) The physical drive is write protected
|
||||||
|
return -EACCES;
|
||||||
|
case FR_INVALID_DRIVE: // (11) The logical drive number is invalid
|
||||||
|
return -ENODEV;
|
||||||
|
case FR_NOT_ENABLED: // (12) The volume has no work area
|
||||||
|
return -ENODEV;
|
||||||
|
case FR_NO_FILESYSTEM: // (13) There is no valid FAT volume
|
||||||
|
return -EINVAL;
|
||||||
|
case FR_MKFS_ABORTED: // (14) The f_mkfs() aborted due to any problem
|
||||||
|
return -EIO;
|
||||||
|
case FR_TIMEOUT: // (15) Could not get a grant to access the volume within defined period
|
||||||
|
return -ETIMEDOUT;
|
||||||
|
case FR_LOCKED: // (16) The operation is rejected according to the file sharing policy
|
||||||
|
return -EBUSY;
|
||||||
|
case FR_NOT_ENOUGH_CORE: // (17) LFN working buffer could not be allocated
|
||||||
|
return -ENOMEM;
|
||||||
|
case FR_TOO_MANY_OPEN_FILES: // (18) Number of open files > FF_FS_LOCK
|
||||||
|
return -ENFILE;
|
||||||
|
case FR_INVALID_PARAMETER: // (19) Given parameter is invalid
|
||||||
|
return -EINVAL;
|
||||||
|
default:
|
||||||
|
return -res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -454,6 +463,10 @@ int FATFileSystem::remove(const char *path)
|
||||||
|
|
||||||
if (res != FR_OK) {
|
if (res != FR_OK) {
|
||||||
debug_if(FFS_DBG, "f_unlink() failed: %d\n", res);
|
debug_if(FFS_DBG, "f_unlink() failed: %d\n", res);
|
||||||
|
if (res == FR_DENIED) {
|
||||||
|
printf("hi %d -> %d\n", FR_DENIED, -ENOTEMPTY);
|
||||||
|
return -ENOTEMPTY;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return fat_error_remap(res);
|
return fat_error_remap(res);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,18 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
|
/* Include logic for errno so we can get errno defined but not bring in error_t,
|
||||||
|
* including errno here prevents an include later, which would redefine our
|
||||||
|
* error codes
|
||||||
|
*/
|
||||||
|
#ifndef __error_t_defined
|
||||||
|
#define __error_t_defined 1
|
||||||
|
#include <errno.h>
|
||||||
|
#undef __error_t_defined
|
||||||
|
#else
|
||||||
|
#include <errno.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
/* We can get the following standard types from sys/types for gcc, but we
|
/* We can get the following standard types from sys/types for gcc, but we
|
||||||
* need to define the types ourselves for the other compilers that normally
|
* need to define the types ourselves for the other compilers that normally
|
||||||
* target embedded systems */
|
* target embedded systems */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue