Listing fully works, attempting to fix name issue with add

This commit is contained in:
2022-12-05 21:21:13 -06:00
parent 88087f6050
commit 5bfa0a79e4
2 changed files with 20 additions and 20 deletions
+17 -20
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]);