| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | /*------------------------------------------------------------// Remove all contents of a directory/ This function works regardless of _FS_RPATH./------------------------------------------------------------*/FRESULT empty_directory (    char* path      /* Working buffer filled with start directory */){    UINT i, j;    FRESULT fr;    DIR dir;    FILINFO fno;#if _USE_LFN    fno.lfname = 0; /* Disable LFN output */#endif    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[64];    /* 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;    }}
 |