www.pudn.com > STM32F4_bootloader.zip > app2.c, change:2013-10-18,size:1597b


/*------------------------------------------------------------/ 
/ 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; /* Eliminate 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 (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 1; 
    } else { 
        printf("All contents in the %s are successfully removed.\n", buff); 
        return 0; 
    } 
}