Fix: use 1 based instead of 0 based fileid
This commit is contained in:
@@ -41,36 +41,37 @@ void SysPrintInt(int value) {
|
||||
}
|
||||
|
||||
OpenFileId SysOpen(char *name) {
|
||||
OpenFileId id = -1;
|
||||
for (int i = 0; i < 20; i++)
|
||||
if (kernel->fileSystem->fileDescriptorTable[i] == NULL) {
|
||||
id = i;
|
||||
kernel->fileSystem->fileDescriptorTable[i]
|
||||
kernel->fileSystem->fileDescriptorTable[i]
|
||||
= kernel->fileSystem->Open(name);
|
||||
if (kernel->fileSystem->fileDescriptorTable[i] == NULL)
|
||||
return -1;
|
||||
break;
|
||||
return i + 1; // OpenFileId starts from 1
|
||||
}
|
||||
return id;
|
||||
return -1;
|
||||
}
|
||||
|
||||
int SysWrite(char *buffer, int size, OpenFileId id) {
|
||||
if (id < 0 || id >= 20 || kernel->fileSystem->fileDescriptorTable[id] == NULL)
|
||||
int idx = id - 1; // Convert 1-based id to 0-based index
|
||||
if (idx < 0 || idx >= 20 || kernel->fileSystem->fileDescriptorTable[idx] == NULL)
|
||||
return -1;
|
||||
return kernel->fileSystem->fileDescriptorTable[id]->Write(buffer, size);
|
||||
return kernel->fileSystem->fileDescriptorTable[idx]->Write(buffer, size);
|
||||
}
|
||||
|
||||
int SysRead(char *buffer, int size, OpenFileId id) {
|
||||
if (id < 0 || id >= 20 || kernel->fileSystem->fileDescriptorTable[id] == NULL)
|
||||
int idx = id - 1; // Convert 1-based id to 0-based index
|
||||
if (idx < 0 || idx >= 20 || kernel->fileSystem->fileDescriptorTable[idx] == NULL)
|
||||
return -1;
|
||||
return kernel->fileSystem->fileDescriptorTable[id]->Read(buffer, size);
|
||||
return kernel->fileSystem->fileDescriptorTable[idx]->Read(buffer, size);
|
||||
}
|
||||
|
||||
int SysClose(OpenFileId id) {
|
||||
if (id < 0 || id >= 20 || kernel->fileSystem->fileDescriptorTable[id] == NULL)
|
||||
int idx = id - 1; // Convert 1-based id to 0-based index
|
||||
if (idx < 0 || idx >= 20 || kernel->fileSystem->fileDescriptorTable[idx] == NULL)
|
||||
return 0;
|
||||
delete kernel->fileSystem->fileDescriptorTable[id];
|
||||
kernel->fileSystem->fileDescriptorTable[id] = NULL;
|
||||
delete kernel->fileSystem->fileDescriptorTable[idx];
|
||||
kernel->fileSystem->fileDescriptorTable[idx] = NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user