forked from Imagelibrary/littlefs
paths: Changed CREAT with a trailing slash to return NOTDIR
- before: lfs_file_open("missing/") => LFS_ERR_ISDIR
- after: lfs_file_open("missing/") => LFS_ERR_NOTDIR
As noted by bmcdonnell-fb, returning LFS_ERR_ISDIR here was inconsistent
with the case where the file exists:
case before after
lfs_file_open("dir_a") => LFS_ERR_ISDIR LFS_ERR_ISDIR
lfs_file_open("dir_a/") => LFS_ERR_ISDIR LFS_ERR_ISDIR
lfs_file_open("reg_a/") => LFS_ERR_NOTDIR LFS_ERR_NOTDIR
lfs_file_open("missing_a/") => LFS_ERR_ISDIR LFS_ERR_NOTDIR
Note this is consistent with the behavior of lfs_stat:
lfs_file_open("reg_a/") => LFS_ERR_NOTDIR
lfs_stat("reg_a/") => LFS_ERR_NOTDIR
And the only other function that can "create" files, lfs_rename:
lfs_file_open("missing_a/") => LFS_ERR_NOTDIR
lfs_rename("reg_a", "missing_a/") => LFS_ERR_NOTDIR
There is some ongoing discussion about if these should return NOTDIR,
ISDIR, or INVAL, but this is at least an improvement over the
rename/open mismatch.
This commit is contained in:
@@ -764,17 +764,17 @@ code = '''
|
||||
} else {
|
||||
lfs_file_t file;
|
||||
lfs_file_open(&lfs, &file, "coffee/drip/",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/coldbrew//",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/turkish///",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/tubruk////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/vietnamese/////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/thai//////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
|
||||
// still create so we have something to test
|
||||
lfs_file_open(&lfs, &file, "coffee/drip",
|
||||
@@ -3972,30 +3972,30 @@ code = '''
|
||||
LFS_O_RDONLY) => LFS_ERR_NOENT;
|
||||
|
||||
lfs_file_open(&lfs, &file, "coffee/_rip/",
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/c_ldbrew//",
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/tu_kish///",
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/tub_uk////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/_vietnamese/////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/thai_//////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT) => LFS_ERR_NOTDIR;
|
||||
|
||||
lfs_file_open(&lfs, &file, "coffee/_rip/",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/c_ldbrew//",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/tu_kish///",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/tub_uk////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/_vietnamese/////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
lfs_file_open(&lfs, &file, "coffee/thai_//////",
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_ISDIR;
|
||||
LFS_O_WRONLY | LFS_O_CREAT | LFS_O_EXCL) => LFS_ERR_NOTDIR;
|
||||
|
||||
// dir open paths, only works on dirs!
|
||||
lfs_dir_t dir;
|
||||
|
||||
Reference in New Issue
Block a user