slcc/fakelibc/string.h

48 lines
1.4 KiB
C
Raw Normal View History

#ifndef _FAKELIBC_STRING_H
#define _FAKELIBC_STRING_H
#include <stddef.h>
//size_t strlen(const char* foo);
#define strlen fake_strlen
static size_t fake_strlen(const char* foo) {
if (foo == NULL) {
return 0;
} else {
size_t i = 0;
while (foo[i] != 0) i++;
return i;
}
}
char *strchr(const char* str, int chr);
char *strrchr(const char* str, int chr);
char* strcat(char* str, const char* cat);
char* strcpy(char* buffer, const char* str);
char* strncpy(char* buffer, const char* str, size_t n);
const char* strpbrk(const char* str, const char* search);
int strcmp(const char* a, const char* b);
char* strdup(const char* str);
char* strndup(const char* str, size_t n);
//void* memcpy(void* dst, const void* src, size_t nbytes);
#define memcpy fake_memcpy
static void* fake_memcpy(void* dst, const void* src, size_t nbytes) {
// TODO: This was only required because calling libc's version triggered errors, this probably isn't an issue now that more bugs have been fixed.
//printf("fake_memcpy(%lx, %lx, %ld)\n", dst, src, nbytes);
char* cdst = (char*) dst;
const char* csrc = (char*) src;
size_t i = 0;
for (i = 0; i < nbytes; i++) {
//printf("fake_memcpy %ld\n", i);
cdst[i] = csrc[i];
}
//printf("fake_memcpy done!\n");
return dst;
}
void* memset(void* mem, int byt, size_t nbytes);
/* From ifndef at top of file: */
#endif