mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'bugfix/vfs_open_errno_v4.4' into 'release/v4.4'
vfs: don't overwrite errno by a hard coded ENOENT (Github PR) (v4.4) See merge request espressif/esp-idf!17044
This commit is contained in:
commit
6c0c3029ab
38
components/vfs/test/test_vfs_open.c
Normal file
38
components/vfs/test/test_vfs_open.c
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: Apache-2.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include "esp_vfs.h"
|
||||||
|
#include "unity.h"
|
||||||
|
|
||||||
|
static int open_errno_test_open(const char * path, int flags, int mode)
|
||||||
|
{
|
||||||
|
errno = EIO;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("esp_vfs_open sets correct errno", "[vfs]")
|
||||||
|
{
|
||||||
|
esp_vfs_t desc = {
|
||||||
|
.open = open_errno_test_open
|
||||||
|
};
|
||||||
|
TEST_ESP_OK(esp_vfs_register("/test", &desc, NULL));
|
||||||
|
|
||||||
|
int fd = open("/test/path", 0, 0);
|
||||||
|
int e = errno;
|
||||||
|
TEST_ASSERT_EQUAL(-1, fd);
|
||||||
|
TEST_ASSERT_EQUAL(EIO, e);
|
||||||
|
|
||||||
|
fd = open("/nonexistent/path", 0, 0);
|
||||||
|
e = errno;
|
||||||
|
TEST_ASSERT_EQUAL(-1, fd);
|
||||||
|
TEST_ASSERT_EQUAL(ENOENT, e);
|
||||||
|
|
||||||
|
TEST_ESP_OK(esp_vfs_unregister("/test"));
|
||||||
|
}
|
@ -415,7 +415,7 @@ int esp_vfs_open(struct _reent *r, const char * path, int flags, int mode)
|
|||||||
__errno_r(r) = ENOMEM;
|
__errno_r(r) = ENOMEM;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
__errno_r(r) = ENOENT;
|
__errno_r(r) = errno;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user