diff --git a/sys/fs/fat/fat.c b/sys/fs/fat/fat.c index c88bc7a..4470a0c 100644 --- a/sys/fs/fat/fat.c +++ b/sys/fs/fat/fat.c @@ -83,19 +83,7 @@ // Close file fl_fclose(file); - /* - fl_listdirectory("/"); - // List root directory - fl_listdirectory("/"); - - size_t size; - - file = fl_fopen("/shell", "r"); - size = fl_fread(data, 1, sizeof(data), file); - kprintf("READ: %i", size); - fl_fclose(file); - */ return (1); } @@ -139,11 +127,13 @@ kprintf("File: %s, ", file); kprintf("Mode: 0x%X\n", fd->mode); - if ((fd->mode & 0x1) == 0x1) + if ((fd->mode & 0x1) == 0x1) { _file = fl_fopen(file, "r"); + } else if ((fd->mode & 0x2) == 0x2) { - if ((fd->mode & 0x8) == 0x8) + if ((fd->mode & 0x8) == 0x8) { _file = fl_fopen(file, "a"); + } else { _file = fl_fopen(file, "w"); kprintf("open for writing"); @@ -153,7 +143,6 @@ kprintf("Invalid Mode?"); if (!_file) { - //kprintf("ERROR[%s:%i]: Open file: [%s] failed\n", __FILE__, __LINE__, file); return (0x0); } else { @@ -162,7 +151,6 @@ fd->perms = 0x1; fd->size = _file->filelength; fd->ino = _file->startcluster; - //kprintf("Size: %i\n", fd->size); } return (0x1); diff --git a/sys/fs/vfs/file.c b/sys/fs/vfs/file.c index bf58c39..e63fa63 100644 --- a/sys/fs/vfs/file.c +++ b/sys/fs/vfs/file.c @@ -542,10 +542,12 @@ kprintf("[%s:%i]", __FILE__, __LINE__); for (tmpFd = fdTable; tmpFd != 0x0; tmpFd = tmpFd->next) { + if (tmpFd == fd) { - kprintf("DUP: [%i:0x%X]", fd->dup, fd); - if (fd->dup > 0) + + if (fd->dup > 0) { fd->dup--; + } else { if (fd->res != 0x0) fl_fclose(fd->res); @@ -559,9 +561,12 @@ fdTable = tmpFd->next; systemVitals->openFiles--; + spinUnlock(&fdTable_lock); + if (tmpFd->buffer != NULL) kfree(tmpFd->buffer); + kfree(tmpFd); return (0x0); }