Listing fully works, attempting to fix name issue with add
This commit is contained in:
+17
-20
@@ -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], ¤tInode, 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], ¤tInode, 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]);
|
||||
|
||||
Reference in New Issue
Block a user