From 468d5968a922459041b0d710cb42f5fdf7551ab8 Mon Sep 17 00:00:00 2001 From: Rick Rongen Date: Sat, 30 Jan 2021 20:20:12 +0100 Subject: [PATCH] feat: implemented strcpy, used constant --- kernel/drivers/keyboard.c | 4 ++-- kernel/libc/libc.c | 4 ++++ kernel/libc/libc.h | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/kernel/drivers/keyboard.c b/kernel/drivers/keyboard.c index 3ac8d7c..dc0d5fe 100644 --- a/kernel/drivers/keyboard.c +++ b/kernel/drivers/keyboard.c @@ -39,7 +39,7 @@ static void keyboard_callback(registers_t regs) { if ((status & 0b00000001) == 0) { return; } - unsigned char scancode = port_byte_in(0x60); + unsigned char scancode = port_byte_in(PORT_PS2_DATA); print_scancode(scancode); } @@ -63,7 +63,7 @@ void print_scancode(unsigned char scancode) { code -= 0x20; // to lowercase } - memcpy(msg, MSG_KEY, strlen(MSG_KEY)); + strcpy(msg, MSG_KEY); msg[strlen(msg) - 3] = code; kprint(msg); } diff --git a/kernel/libc/libc.c b/kernel/libc/libc.c index 81cf78c..9702d7d 100644 --- a/kernel/libc/libc.c +++ b/kernel/libc/libc.c @@ -14,6 +14,10 @@ int memcpy(char *dst, char *src, int amount) { return 0; } +int strcpy(char *dst, char *src) { + return memcpy(dst, src, strlen(src) + 1); +} + int memset(char *dst, char data, int amount) { for (int i = 0; i < amount; ++i) { dst[i] = data; diff --git a/kernel/libc/libc.h b/kernel/libc/libc.h index 53c07ea..67f8a97 100644 --- a/kernel/libc/libc.h +++ b/kernel/libc/libc.h @@ -10,6 +10,8 @@ int memcpy(char *dst, char *src, int amount); +int strcpy(char *dst, char *src); + int memset(char *dst, char data, int amount); int itoa(int i, char *target);