Преглед на файлове

lwip: Add partial fstat vfs support to set st_mode

Closes https://github.com/espressif/esp-idf/issues/7198
David Cermak преди 4 години
родител
ревизия
d55ed5c11b
променени са 1 файла, в които са добавени 13 реда и са изтрити 1 реда
  1. 13 1
      components/lwip/port/esp32/vfs_lwip.c

+ 13 - 1
components/lwip/port/esp32/vfs_lwip.c

@@ -70,13 +70,25 @@ static int lwip_ioctl_r_wrapper(int fd, int cmd, va_list args)
     return lwip_ioctl(fd, cmd, va_arg(args, void *));
 }
 
+static int lwip_fstat(int fd, struct stat * st)
+{
+    if (st == NULL || fd < LWIP_SOCKET_OFFSET || fd > (MAX_FDS - 1)) {
+        errno = EBADF;
+        return -1;
+    }
+    memset(st, 0, sizeof(*st));
+    /* set the stat mode to socket type */
+    st->st_mode = S_IFSOCK;
+    return 0;
+}
+
 void esp_vfs_lwip_sockets_register(void)
 {
     esp_vfs_t vfs = {
         .flags = ESP_VFS_FLAG_DEFAULT,
         .write = &lwip_write,
         .open = NULL,
-        .fstat = NULL,
+        .fstat = &lwip_fstat,
         .close = &lwip_close,
         .read = &lwip_read,
         .fcntl = &lwip_fcntl_r_wrapper,