diff --git a/mongoose.c b/mongoose.c index e9890290..d5f02b03 100644 --- a/mongoose.c +++ b/mongoose.c @@ -521,8 +521,8 @@ static void ff_list(const char *dir, void (*fn)(const char *, void *), static void *ff_open(const char *path, int flags) { FIL f; - unsigned char mode = - flags == MG_FS_READ ? FA_READ : FA_READ | FA_WRITE | FA_OPEN_APPEND; + unsigned char mode = FA_READ; + if (flags & MG_FS_WRITE) mode |= FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_APPEND; if (f_open(&f, path, mode) == 0) { FIL *fp = calloc(1, sizeof(*fp)); *fp = f; diff --git a/src/fs_fat.c b/src/fs_fat.c index bd1b5457..5104e504 100644 --- a/src/fs_fat.c +++ b/src/fs_fat.c @@ -33,8 +33,8 @@ static void ff_list(const char *dir, void (*fn)(const char *, void *), static void *ff_open(const char *path, int flags) { FIL f; - unsigned char mode = - flags == MG_FS_READ ? FA_READ : FA_READ | FA_WRITE | FA_OPEN_APPEND; + unsigned char mode = FA_READ; + if (flags & MG_FS_WRITE) mode |= FA_WRITE | FA_CREATE_ALWAYS | FA_OPEN_APPEND; if (f_open(&f, path, mode) == 0) { FIL *fp = calloc(1, sizeof(*fp)); *fp = f;