# Use spiffs source directory as the test image
spiffs_image: ../spiffs $(shell find ../spiffs -type d) $(shell find ../spiffs -type -f -name '*')
- ../spiffsgen.py 2097152 ../spiffs image.bin
+ # Creation of test symlinks unfortunately causes rerun of spiffsgen.py every make invoke
+ rm -f ../spiffs/include ../spiffs/CMakeLists.txt
+ ln -s ../include ../spiffs/include
+ ln -s ../CMakeLists.txt ../spiffs/CMakeLists.txt
+ ../spiffsgen.py --follow-symlinks 2097152 ../spiffs image.bin
test: $(TEST_PROGRAM) spiffs_image
./$(TEST_PROGRAM)
#include <stdio.h>
#include <string.h>
#include <stdint.h>
+#include <stdlib.h>
#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/types.h>
#include <dirent.h>
#include <limits.h>
+#include <unistd.h>
#include "esp_partition.h"
#include "spiffs.h"
while ((entry = readdir(dir)) != NULL) {
char *name = entry->d_name;
- if (entry->d_type == DT_DIR) {
+
+ char path[PATH_MAX] = { 0 };
+
+ // Read the file from host FS
+ strcpy(path, cur_path);
+ strcat(path, "/");
+ strcat(path, name);
+
+ struct stat sb;
+ stat(path, &sb);
+
+ if (S_ISDIR(sb.st_mode)) {
if (!strcmp(name, ".") || !strcmp(name, ".."))
continue;
cur_path[len] = '/';
check_spiffs_files(fs, base_path, cur_path);
cur_path[len] = '\0';
} else {
- char path[PATH_MAX];
-
- // Read the file from host FS
- strcpy(path, cur_path);
- strcat(path, "/");
- strcat(path, name);
-
FILE* f = fopen(path , "r");
REQUIRE(f);
fseek(f, 0, SEEK_END);
// Read the file from SPIFFS
char *spiffs_path = path + strlen(base_path);
spiffs_res = SPIFFS_open(fs, spiffs_path, SPIFFS_RDONLY, 0);
+
REQUIRE(spiffs_res > SPIFFS_OK);
spiffs_file fd = spiffs_res;