mirror of
https://github.com/BoredDevNL/BoredOS.git
synced 2026-05-15 10:48:38 +00:00
80 lines
1.6 KiB
C
80 lines
1.6 KiB
C
#include "cli_utils.h"
|
|
|
|
// Forward declarations - these will be provided by cmd.c
|
|
extern void cmd_putchar(char c);
|
|
extern void cmd_write(const char *str);
|
|
extern void cmd_write_int(int n);
|
|
|
|
void cli_memset(void *dest, int val, size_t len) {
|
|
unsigned char *ptr = dest;
|
|
while (len-- > 0) *ptr++ = val;
|
|
}
|
|
|
|
size_t cli_strlen(const char *str) {
|
|
size_t len = 0;
|
|
while (str[len]) len++;
|
|
return len;
|
|
}
|
|
|
|
int cli_strcmp(const char *s1, const char *s2) {
|
|
while (*s1 && (*s1 == *s2)) {
|
|
s1++;
|
|
s2++;
|
|
}
|
|
return *(const unsigned char*)s1 - *(const unsigned char*)s2;
|
|
}
|
|
|
|
void cli_strcpy(char *dest, const char *src) {
|
|
while (*src) *dest++ = *src++;
|
|
*dest = 0;
|
|
}
|
|
|
|
int cli_atoi(const char *str) {
|
|
int res = 0;
|
|
int sign = 1;
|
|
if (*str == '-') { sign = -1; str++; }
|
|
while (*str >= '0' && *str <= '9') {
|
|
res = res * 10 + (*str - '0');
|
|
str++;
|
|
}
|
|
return res * sign;
|
|
}
|
|
|
|
void cli_itoa(int n, char *buf) {
|
|
if (n == 0) {
|
|
buf[0] = '0'; buf[1] = 0; return;
|
|
}
|
|
int i = 0;
|
|
int sign = n < 0;
|
|
if (sign) n = -n;
|
|
while (n > 0) {
|
|
buf[i++] = (n % 10) + '0';
|
|
n /= 10;
|
|
}
|
|
if (sign) buf[i++] = '-';
|
|
buf[i] = 0;
|
|
// Reverse
|
|
for (int j = 0; j < i / 2; j++) {
|
|
char t = buf[j];
|
|
buf[j] = buf[i - 1 - j];
|
|
buf[i - 1 - j] = t;
|
|
}
|
|
}
|
|
|
|
void cli_write(const char *str) {
|
|
cmd_write(str);
|
|
}
|
|
|
|
void cli_write_int(int n) {
|
|
cmd_write_int(n);
|
|
}
|
|
|
|
void cli_putchar(char c) {
|
|
cmd_putchar(c);
|
|
}
|
|
|
|
void cli_delay(int iterations) {
|
|
for (volatile int i = 0; i < iterations; i++) {
|
|
__asm__ __volatile__("nop");
|
|
}
|
|
}
|