From 289f6a146c0b2087607d8d8659531ea90142779a Mon Sep 17 00:00:00 2001 From: Leo C Date: Sun, 27 May 2018 21:26:38 +0200 Subject: Import fatfs R0.13b --- fatfs/documents/res/app2.c | 68 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 fatfs/documents/res/app2.c (limited to 'fatfs/documents/res/app2.c') diff --git a/fatfs/documents/res/app2.c b/fatfs/documents/res/app2.c new file mode 100644 index 0000000..3de3eee --- /dev/null +++ b/fatfs/documents/res/app2.c @@ -0,0 +1,68 @@ +/*------------------------------------------------------------/ +/ Remove all contents of a directory +/ This function works regardless of FF_FS_RPATH. +/------------------------------------------------------------*/ + + +FILINFO fno; + +FRESULT empty_directory ( + char* path /* Working buffer filled with start directory */ +) +{ + UINT i, j; + FRESULT fr; + DIR dir; + + fr = f_opendir(&dir, path); + if (fr == FR_OK) { + for (i = 0; path[i]; i++) ; + path[i++] = '/'; + for (;;) { + fr = f_readdir(&dir, &fno); + if (fr != FR_OK || !fno.fname[0]) break; + if (_FS_RPATH && fno.fname[0] == '.') continue; + j = 0; + do + path[i+j] = fno.fname[j]; + while (fno.fname[j++]); + if (fno.fattrib & AM_DIR) { + fr = empty_directory(path); + if (fr != FR_OK) break; + } + fr = f_unlink(path); + if (fr != FR_OK) break; + } + path[--i] = '\0'; + closedir(&dir); + } + + return fr; +} + + + +int main (void) +{ + FRESULT fr; + FATFS fs; + char buff[256]; /* Working buffer */ + + + + f_mount(&fs, "", 0); + + strcpy(buff, "/"); /* Directory to be emptied */ + fr = empty_directory(buff); + + if (fr) { + printf("Function failed. (%u)\n", fr); + return fr; + } else { + printf("All contents in the %s are successfully removed.\n", buff); + return 0; + } +} + + + -- cgit v1.2.3