Listing fully works, attempting to fix name issue with add

This commit is contained in:
TriantaTV 2022-12-05 21:21:13 -06:00
parent 88087f6050
commit 5bfa0a79e4
2 changed files with 20 additions and 20 deletions

View File

@ -44,24 +44,23 @@ void AddFileToFS(FileSystem* fs, char* fname)
// Second: get a number for the next free direct block
// Third: get a free inode number
// Fourth: set info for direct block
tempname = strndup(fname, splitLocation - 1);
if (IsDirectorySetup(fs->inodes[currentInode], &currentInode, tempname))
continue;
for (int i = 0; i < 4; i++)
tempfbl[i] = (currentInode*4) + i;
newDirectBlock = GetFreeBlockNumber(tempfbl, 4);
newInode = GetFreeInodeNumber(fs->inodes);
strcpy(fs->inodes[currentInode].blocks[newDirectBlock].name, tempname);
free(tempname);
fs->inodes[currentInode].blocks[newDirectBlock].isValid = 1;
fs->inodes[currentInode].blocks[newDirectBlock].isDirectory = 1;
fs->inodes[currentInode].blocks[newDirectBlock].inode = newInode;
currentInode = newInode;
fs->inodes[currentInode].isValid = 1;
// SetDirectBlock(fs->inodes[currentInode].blocks[newDirectBlock]);
// SetNewInode();
// fs->inodes[currentInode].blocks;
// inodeNumber = GetFreeInodeNumber(fs->inodes);
tempname = strndup(fname, splitLocation);
if (!IsDirectorySetup(fs->inodes[currentInode], &currentInode, tempname))
{
for (int i = 0; i < 4; i++)
tempfbl[i] = (currentInode*4) + i;
newDirectBlock = GetFreeBlockNumber(tempfbl, 4);
newInode = GetFreeInodeNumber(fs->inodes);
printf("Name held: |%s|\n", tempname);
printf("Block: |%i|\n", newDirectBlock);
strcpy(fs->inodes[currentInode].blocks[newDirectBlock].name, tempname);
free(tempname);
fs->inodes[currentInode].blocks[newDirectBlock].isValid = 1;
fs->inodes[currentInode].blocks[newDirectBlock].isDirectory = 1;
fs->inodes[currentInode].blocks[newDirectBlock].inode = newInode;
currentInode = newInode;
fs->inodes[currentInode].isValid = 1;
}
fname = fname + splitLocation + 1;
splitLocation = FindNextDirectory(fname);
}
@ -71,12 +70,10 @@ void AddFileToFS(FileSystem* fs, char* fname)
fs->inodes[currentInode].blocks[newDirectBlock].isValid = 1;
fs->inodes[currentInode].blocks[newDirectBlock].size = tempstat.st_size;
strcpy(fs->inodes[currentInode].blocks[newDirectBlock].name, fname);
// SetFileInDirectory();
return;
}
// List path names of all used inodes
// TODO: Fix implementation to print starting at Inode 0
void ListFS(FileSystem* fs)
{
Inode* fsRoot = &(fs->inodes[0]);

View File

@ -64,6 +64,9 @@ void Test_FileSystem_Should_AddFile(void)
argv[1] = "-a";
GetArguments(argc, argv, &dummyFuse);
RunFuse(fakefs, &dummyFuse);
argv[2] = "test/files/test2.txt";
GetArguments(argc, argv, &dummyFuse);
RunFuse(fakefs, &dummyFuse);
TEST_ASSERT_EQUAL(1, fakefs->inodes[1].isValid);
TEST_ASSERT_EQUAL_CHAR_ARRAY("test1.txt", fakefs->inodes[2].blocks[0].name, 9);
}