Beispiel #1
0
/**
 * The recursive helper function. It deletes all files inside specified
 * directory and calls itself to delete subdirectories.
 *
 * @param pDirName the directory to delete
 * @param pSep system-dependent file separator
 */
void do_cleanup(const pcsl_string* pDirName, const pcsl_string* pSep)
{
    void* fileList = NULL;
    pcsl_string fileName = PCSL_STRING_NULL;
    pcsl_string dirName  = PCSL_STRING_NULL;

    // add tailing file separator to directory name
    if (pcsl_string_cat(pDirName, pSep, &dirName) != PCSL_STRING_OK) {
        return;
    }

    fileList = pcsl_file_openfilelist(&dirName);
    if (fileList == NULL) {
        pcsl_string_free(&dirName);
        return;
    }

    // iterate over the directory's content
    while (!pcsl_file_getnextentry(fileList, &dirName, &fileName)) {
        int isDir = pcsl_file_is_directory(&fileName);
        if (isDir == 1) {
            // make recursion
            do_cleanup(&fileName, pSep);
        } else {
            // remove file
            pcsl_file_unlink(&fileName);
        }
        pcsl_string_free(&fileName);
    };

    pcsl_string_free(&dirName);
    pcsl_file_closefilelist(fileList);
    // remove empty directory
    pcsl_file_rmdir(pDirName);
}
Beispiel #2
0
/**
 * Tests for pcsl_file_is_directory(), pcsl_file_mkdir() and pcsl_file_rmdir().
 */
void testDirectories() {
    int res;

    res = pcsl_file_is_directory(&dir1);
    assertTrue("\".\" is not recognized as a directory", res == 1);
    res = pcsl_file_is_directory(&dummy1);
    assertTrue("Non-existent directory is erroneously found", res != 1);

    res = pcsl_file_mkdir(&dir3);
    assertTrue("mkdir failed", res == 0);
    res = pcsl_file_is_directory(&dir3);
    assertTrue("Directory wasn't created", res == 1);
    res = pcsl_file_mkdir(&dir3);
    assertTrue("mkdir succeeded for directory that already exists", res != 0);

    res = pcsl_file_rmdir(&dir3);
    assertTrue("rmdir failed", res == 0);
    res = pcsl_file_is_directory(&dir3);
    assertTrue("Directory wasn't deleted", res != 1);
    res = pcsl_file_rmdir(&dummy1);
    assertTrue("rmdir succeeded for non-exisent directory", res != 0);
}