Add directory listing support ot ESP32

PUBLISHED_FROM=336d6b28d6165ece75d25911058ffdd075a3c191
This commit is contained in:
Deomid Ryabkov 2016-12-23 14:24:27 +02:00 committed by Cesanta Bot
parent 3829873552
commit c55d06ed57

View File

@ -587,6 +587,10 @@ typedef struct DIR {
} DIR;
#endif
#if CS_ENABLE_SPIFFS
extern spiffs *cs_spiffs_get_fs(void);
#endif
#if defined(_WIN32) || CS_ENABLE_SPIFFS
DIR *opendir(const char *dir_name);
int closedir(DIR *dir);
@ -694,10 +698,14 @@ struct dirent *readdir(DIR *dir) {
DIR *opendir(const char *dir_name) {
DIR *dir = NULL;
extern spiffs fs;
spiffs *fs = cs_spiffs_get_fs();
if (dir_name != NULL && (dir = (DIR *) malloc(sizeof(*dir))) != NULL &&
SPIFFS_opendir(&fs, (char *) dir_name, &dir->dh) == NULL) {
if (dir_name == NULL || fs == NULL ||
(dir = (DIR *) calloc(1, sizeof(*dir))) == NULL) {
return NULL;
}
if (SPIFFS_opendir(fs, dir_name, &dir->dh) == NULL) {
free(dir);
dir = NULL;
}
@ -720,14 +728,14 @@ struct dirent *readdir(DIR *dir) {
/* SPIFFs doesn't support directory operations */
int rmdir(const char *path) {
(void) path;
return ENOTDIR;
return ENOTSUP;
}
int mkdir(const char *path, mode_t mode) {
(void) path;
(void) mode;
/* for spiffs supports only root dir, which comes from mongoose as '.' */
return (strlen(path) == 1 && *path == '.') ? 0 : ENOTDIR;
return (strlen(path) == 1 && *path == '.') ? 0 : ENOTSUP;
}
#endif /* CS_ENABLE_SPIFFS */