syscalls: make use of stderr and fix chdir syscall return value

This commit is contained in:
2025-07-18 22:43:34 +03:00
parent 3ae26ed88a
commit 992d82c6d4
3 changed files with 21 additions and 1 deletions
+5
View File
@@ -36,6 +36,11 @@ void terminal_setcolor(uint8_t color)
terminal_color = color;
}
uint8_t terminal_getcolor()
{
return terminal_color;
}
void terminal_putentryat(char c, uint8_t color, size_t x, size_t y)
{
const size_t index = y * VGA_WIDTH + x;
+15 -1
View File
@@ -4,6 +4,7 @@
#include "../include/liballoc.h"
#include "../include/paging.h"
#include "../include/string.h"
#include "../include/screen.h"
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
@@ -171,6 +172,14 @@ int sys_write(TrapFrame *tf)
//debug_log("\n=================END OF THAT SHIT=====================\n");
return tf->edx;
}
if(tf->ebx == STDERR_FILENO)
{
uint8_t prev_color = terminal_getcolor();
terminal_setcolor(VGA_COLOR_RED);
print((char*)tf->ecx, tf->edx);
terminal_setcolor(prev_color);
return tf->edx;
}
}
else
{
@@ -234,7 +243,12 @@ int sys_chdir(TrapFrame *tf)
{
strcat(current->cwd->fat->path, "/");
strcat(current->cwd->fat->path, (char*)tf->ebx);
return fat_opendir(current->cwd, (const char*)tf->ebx);
int result = fat_opendir(current->cwd, (const char*)tf->ebx);
if(result == 0)
return 0;
return -1;
}
int sys_getcwd(TrapFrame *tf)