make run: Use -vga std
[snowy-minesweeper.git] / string.c
blob39ba58fe926a26aef8c60eda5f9a4e2d0b16cb8f
1 #include <stdint.h>
2 #include <string.h>
4 void *memchr(const void *s, int c, size_t n)
6 const unsigned char *b = s;
8 while (n--) {
9 if (*(b++) == (unsigned char)c) {
10 return (void *)(b - 1);
14 return NULL;
17 int memcmp(const void *s1, const void *s2, size_t n)
19 int ret = 0;
20 const unsigned char *b1 = s1, *b2 = s2;
22 while (n-- && !(ret = *(b2++) - *(b1++)));
24 return ret;
27 void *memmove(void *d, const void *s, size_t n)
29 const uint8_t *s8 = s;
30 uint8_t *d8 = d;
32 if ((uintptr_t)d < (uintptr_t)s || (uintptr_t)s + n <= (uintptr_t)d) {
33 while (n--) {
34 *(d8++) = *(s8++);
36 } else {
37 while (n--) {
38 d8[n] = s8[n];
42 return d;
45 char *strcat(char *restrict d, const char *restrict s)
47 char *vd = d;
49 while (*(vd++));
50 vd--;
52 while (*s) {
53 *(vd++) = *(s++);
55 *vd = 0;
57 return d;
60 char *strcpy(char *restrict d, const char *restrict s)
62 char *vd = d;
64 while (*s) {
65 *(vd++) = *(s++);
67 *vd = 0;
69 return d;
72 int strcmp(const char *s1, const char *s2)
74 int ret;
76 while (!(ret = (unsigned char)*(s2++) - (unsigned char)*s1)) {
77 if (!*(s1++)) {
78 return 0;
82 return ret;