diff --git a/includes/miniffs.h b/includes/miniffs.h index 746d2e3..790ab58 100644 --- a/includes/miniffs.h +++ b/includes/miniffs.h @@ -94,6 +94,9 @@ uint8_t miniffs_read(file_t *file); /** int miniffs_seek(file_t *file, size_t offset, int whence); /***< Set position in a file */ size_t miniffs_tell(file_t *file); /***< Get current position in a file*/ +int miniffs_write(file_t *file, char value); +char *miniffs_getversion(); + typedef enum miniffs_error_t { MINIFFS_NOERROR = 0, diff --git a/miniffs.c b/miniffs.c index 3803cd6..f199b51 100644 --- a/miniffs.c +++ b/miniffs.c @@ -90,6 +90,29 @@ uint8_t miniffs_read(file_t *file) return ret; } +int miniffs_write(file_t *file, char value) +{ + miniffs_t *fs = (miniffs_t *) file->private_data; + uint8_t *filePtr = miniffs_getfileaddr(fs, file->fent); + + + filePtr[file->offset] = value; + + file->offset++; + + if (file->offset >= file->fent->size) + { + miniffs_seterror(MINIFFS_END_OF_FILE); + file->offset = file->fent->size - 1; + } + else + { + miniffs_seterror(MINIFFS_NOERROR); + } + + return 0; +} + int miniffs_read_blocks(void *ptr, size_t size, size_t nmemb, file_t *file) { int i; @@ -220,4 +243,9 @@ exit: void miniffs_seterror(miniffs_error_t err) { last_error = err; +} + +char *miniffs_getversion() +{ + return VERSION; } \ No newline at end of file