Compare commits
1 Commits
main
...
ytung/laye
Author | SHA1 | Date | |
---|---|---|---|
![]() |
8a6b5ffcac |
@ -790,10 +790,11 @@ int FilesOperation::fischl_rename(const char *old_path, const char *new_path, un
|
||||
RenameInfo rename_info;
|
||||
rename_info.exchangeExist = false;
|
||||
rename_info.oldParentNode = fischl_find_entry(root_node, oldParentPath);
|
||||
rename_info.oldFileNode = fischl_find_entry(rename_info.oldParentNode->subdirectory, filename);
|
||||
//if path end with / means to rename directory
|
||||
rename_info.oldFileNode = strlen(filename)? fischl_find_entry(rename_info.oldParentNode->subdirectory, filename):rename_info.oldParentNode;
|
||||
|
||||
if (rename_info.oldFileNode == NULL) {
|
||||
printf("path %s not found by fischl_find_entry\n", old_path);
|
||||
fprintf(stderr,"[%s ,%d] path %s not found by fischl_find_entry\n",__func__,__LINE__, old_path);
|
||||
free(pathdup);
|
||||
return -1;
|
||||
}
|
||||
@ -832,7 +833,10 @@ int FilesOperation::fischl_rename(const char *old_path, const char *new_path, un
|
||||
|
||||
// Normal rename logic if no flags are specified; can overwirte
|
||||
// Hard Disk rename
|
||||
if(rename_info.oldFileNode->subdirectory != NULL){//secure its directory
|
||||
//remove its record from subdirectory; find .. from subdirectory
|
||||
|
||||
}
|
||||
// remove its record from parent
|
||||
INode_Data parent_INode;
|
||||
parent_INode.inode_num = rename_info.oldParentNode->inode_number;
|
||||
|
@ -206,6 +206,34 @@ TEST(FileOperationTest, UnlinkTest) {
|
||||
printf("/AAA...AAA is inode %llu, it is a file\n", filelong);
|
||||
}
|
||||
|
||||
TEST(FileOperationTest, renameTest){
|
||||
struct fuse_file_info fi;
|
||||
char read_buffer[IO_BLOCK_SIZE] = {0};
|
||||
|
||||
u_int64_t get_inode_num = fsop->disk_namei("/test");
|
||||
fprintf(stderr,"[%s ,%d] /test inode %d\n",__func__,__LINE__,get_inode_num);
|
||||
/*Cache are not yet implemented*/
|
||||
// fsop->fischl_open("/test", &fi);
|
||||
// fprintf(stderr,"[%s ,%d] fi.fh %d\n",__func__,__LINE__,fi.fh);
|
||||
// fsop->fischl_read("/test", read_buffer, sizeof(read_buffer), 0, &fi);
|
||||
// EXPECT_EQ(read_buffer[0], '1');
|
||||
|
||||
EXPECT_EQ(fsop->fischl_rename("/test", "/test123", 0),0);//defualt
|
||||
EXPECT_EQ(fsop->disk_namei("/test123"),get_inode_num);
|
||||
get_inode_num = fsop->disk_namei("/test");//should be failed becuase cannot find
|
||||
fprintf(stderr,"[%s ,%d] /test inode %d\n",__func__,__LINE__,get_inode_num);
|
||||
/*Cache are not yet implemented*/
|
||||
// fsop->fischl_open("/test123", &fi);
|
||||
// fprintf(stderr,"[%s ,%d] fi.fh %d\n",__func__,__LINE__,fi.fh);
|
||||
// fsop->fischl_read("/test123", read_buffer, sizeof(read_buffer), 0, &fi);
|
||||
// EXPECT_EQ(read_buffer[0], '1');
|
||||
/*Read with hard disk*/
|
||||
INode_Data inode;
|
||||
inode.inode_num = fsop->disk_namei("/test123");
|
||||
fs->inode_manager->load_inode(&inode);
|
||||
fs->read(&inode, read_buffer, sizeof(read_buffer), 0);
|
||||
EXPECT_EQ(read_buffer[0], '1');
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
srand(time(NULL)); // Seed the random number generator
|
||||
|
Loading…
x
Reference in New Issue
Block a user