Add support to mkdir & rmdir in hostfs
This commit is contained in:
parent
7d31cb743c
commit
70d7d10eeb
@ -127,8 +127,11 @@ impl INode for HNode {
|
||||
FileType::File => {
|
||||
try_std!(fs::File::create(&new_path));
|
||||
}
|
||||
FileType::Dir => {
|
||||
try_std!(fs::create_dir(&new_path));
|
||||
}
|
||||
_ => {
|
||||
warn!("only support creating regular files in HostFS");
|
||||
warn!("only support creating regular file or directory in HostFS");
|
||||
return Err(FsError::PermError);
|
||||
}
|
||||
}
|
||||
@ -150,8 +153,7 @@ impl INode for HNode {
|
||||
if new_path.is_file() {
|
||||
try_std!(fs::remove_file(new_path));
|
||||
} else if new_path.is_dir() {
|
||||
unimplemented!("no remove_dir in sgx_std?")
|
||||
// fs::remove_dir(new_path)?;
|
||||
try_std!(fs::remove_dir(new_path));
|
||||
} else {
|
||||
return Err(FsError::EntryNotFound);
|
||||
}
|
||||
|
@ -155,6 +155,26 @@ static int test_readdir() {
|
||||
return test_hostfs_framework(__test_readdir);
|
||||
}
|
||||
|
||||
static int test_mkdir_then_rmdir() {
|
||||
const char *dir_path = "/host/hostfs_dir";
|
||||
struct stat stat_buf;
|
||||
|
||||
if (mkdir(dir_path, 00775) < 0) {
|
||||
THROW_ERROR("failed to create the dir");
|
||||
}
|
||||
if (stat(dir_path, &stat_buf) < 0) {
|
||||
THROW_ERROR("failed to stat dir");
|
||||
}
|
||||
if (!S_ISDIR(stat_buf.st_mode)) {
|
||||
THROW_ERROR("failed to check if it is dir");
|
||||
}
|
||||
|
||||
if (rmdir(dir_path) < 0) {
|
||||
THROW_ERROR("failed to remove the created dir");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// Test suite main
|
||||
// ============================================================================
|
||||
@ -163,6 +183,7 @@ static test_case_t test_cases[] = {
|
||||
TEST_CASE(test_write_read),
|
||||
TEST_CASE(test_rename),
|
||||
TEST_CASE(test_readdir),
|
||||
TEST_CASE(test_mkdir_then_rmdir),
|
||||
};
|
||||
|
||||
int main(int argc, const char *argv[]) {
|
||||
|
Loading…
Reference in New Issue
Block a user