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;
|
||||
return -1;
|
||||
}
|
||||
__errno_r(r) = ENOENT;
|
||||
__errno_r(r) = errno;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user