diff options
Diffstat (limited to 'sys/lib/string')
-rw-r--r-- | sys/lib/string/itoa.c | 134 | ||||
-rw-r--r-- | sys/lib/string/memcmp.c | 46 | ||||
-rw-r--r-- | sys/lib/string/memcpy.c | 50 | ||||
-rw-r--r-- | sys/lib/string/memmove.c | 49 | ||||
-rw-r--r-- | sys/lib/string/memset.c | 50 | ||||
-rw-r--r-- | sys/lib/string/strcmp.c | 39 | ||||
-rw-r--r-- | sys/lib/string/strlen.c | 40 | ||||
-rw-r--r-- | sys/lib/string/vsnprintf.c | 139 |
8 files changed, 0 insertions, 547 deletions
diff --git a/sys/lib/string/itoa.c b/sys/lib/string/itoa.c deleted file mode 100644 index 01e2fef..0000000 --- a/sys/lib/string/itoa.c +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> - -static char *itoa_base10_convert(int64_t value, char *buf); - -static char * -itoa_base10_convert(int64_t value, char *buf) -{ - size_t i; - uint8_t tmp; - bool is_negative; - - i = 0; - is_negative = false; - - if (value == 0) { - buf[i++] = '0'; - buf[i++] = '\0'; - return buf; - } - - if (value < 0) { - /* Easier to handle positive numbers */ - value *= -1; - is_negative = true; - } - - while (value > 0) { - buf[i++] = '0' + (value % 10); - value /= 10; - } - - if (is_negative) { - buf[i++] = '-'; - } - - buf[i--] = '\0'; - - /* Result is in reverse */ - for (int j = 0; j < i; ++j, --i) { - tmp = buf[j]; - buf[j] = buf[i]; - buf[i] = tmp; - } - - return buf; -} - -static char * -itoa_convert_base16(uint64_t n, char *buffer) -{ - bool pad; - uint8_t nibble; - uint8_t i, j, tmp; - const char *ascii_nums = "0123456789ABCDEF"; - - i = 0; - pad = false; - - if (n == 0) { - /* Zero, no need to parse */ - memcpy(buffer, "0x00\0", 5); - return buffer; - } - /* If one digit, pad out 2 later */ - if (n < 0x10) { - pad = true; - } - - while (n > 0) { - nibble = (uint8_t)n & 0x0F; - nibble = ascii_nums[nibble]; - buffer[i++] = nibble; - n >>= 4; /* Fetch next nibble */ - } - - if (pad) { - buffer[i++] = '0'; - } - - /* Add "0x" prefix */ - buffer[i++] = 'x'; - buffer[i++] = '0'; - buffer[i--] = '\0'; - - /* Unreverse the result */ - for (j = 0; j < i; ++j, --i) { - tmp = buffer[j]; - buffer[j] = buffer[i]; - buffer[i] = tmp; - } - return buffer; -} - -char * -itoa(int64_t value, char *buf, int base) -{ - switch (base) { - case 10: - return itoa_base10_convert(value, buf); - case 16: - return itoa_convert_base16(value, buf); - default: - return NULL; - } -} diff --git a/sys/lib/string/memcmp.c b/sys/lib/string/memcmp.c deleted file mode 100644 index 6e95aa8..0000000 --- a/sys/lib/string/memcmp.c +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ -/* $Id */ - -#include <string.h> - -int -memcmp(const void *s1, const void *s2, size_t n) -{ - if (n != 0) { - const unsigned char *p1 = s1, *p2 = s2; - - do { - if (*p1++ != *p2++) { - return (*--p1 - *--p2); - } - } while (--n != 0); - } - return 0; -} diff --git a/sys/lib/string/memcpy.c b/sys/lib/string/memcpy.c deleted file mode 100644 index 09cb90e..0000000 --- a/sys/lib/string/memcpy.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> - -void * -memcpy(void *dest, const void *src, size_t n) -{ - for (size_t i = 0; i < n; ++i) { - ((char *)dest)[i] = ((char *)src)[i]; - } - - return dest; -} - -void * -memcpy32(void *dest, const void *src, size_t n) -{ - for (size_t i = 0; i < n; ++i) { - ((uint32_t *)dest)[i] = ((uint32_t *)src)[i]; - } - - return dest; -} diff --git a/sys/lib/string/memmove.c b/sys/lib/string/memmove.c deleted file mode 100644 index ea5cad2..0000000 --- a/sys/lib/string/memmove.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> - -void * -memmove(void *s1, const void *s2, size_t n) -{ - const char *f = s2; - char *t = s1; - - if (f < t) { - f += n; - t += n; - while (n-- > 0) - *--t = *--f; - } else { - while (n-- > 0) - *t++ = *f++; - } - - return s1; -} diff --git a/sys/lib/string/memset.c b/sys/lib/string/memset.c deleted file mode 100644 index 4e92cc6..0000000 --- a/sys/lib/string/memset.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> - -void * -memset(void *s, int c, size_t n) -{ - for (size_t i = 0; i < n; ++i) { - ((char *)s)[i] = c; - } - - return s; -} - -void * -memset64(void *s, int c, size_t n) -{ - for (size_t i = 0; i < n; ++i) { - ((uint32_t *)s)[i] = c; - } - - return s; -} diff --git a/sys/lib/string/strcmp.c b/sys/lib/string/strcmp.c deleted file mode 100644 index 4648f32..0000000 --- a/sys/lib/string/strcmp.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> - -int -strcmp(const char *s1, const char *s2) -{ - while (*s1 == *s2++) - if (*s1++ == 0) - return (0); - return (*(unsigned char *)s1 - *(unsigned char *)--s2); -} diff --git a/sys/lib/string/strlen.c b/sys/lib/string/strlen.c deleted file mode 100644 index 85ccf23..0000000 --- a/sys/lib/string/strlen.c +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> - -size_t -strlen(const char *s) -{ - size_t len; - - len = 0; - while (s[len++]); - return len - 1; -} diff --git a/sys/lib/string/vsnprintf.c b/sys/lib/string/vsnprintf.c deleted file mode 100644 index b8a4faa..0000000 --- a/sys/lib/string/vsnprintf.c +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright (c) 2023-2024 Ian Marco Moffett and the Osmora Team. - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of Hyra nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include <string.h> -#include <stdarg.h> -#include <sys/types.h> - -static inline void -printc(char *buf, size_t size, size_t *off, char c) -{ - if (*off < size - 1) { - buf[(*off)++] = c; - } - buf[*off] = 0; -} - -static void -printstr(char *buf, size_t size, size_t *off, const char *s) -{ - while (*off < size - 1 && *s != '\0') { - buf[(*off)++] = *(s)++; - } - buf[*off] = 0; -} - -int -snprintf(char *s, size_t size, const char *fmt, ...) -{ - va_list ap; - int ret; - - va_start(ap, fmt); - ret = vsnprintf(s, size, fmt, ap); - va_end(ap); - return ret; -} - -int -vsnprintf(char *s, size_t size, const char *fmt, va_list ap) -{ - size_t tmp_len, num_len, off = 0; - ssize_t num = 0; - char c, c1, num_buf[256] = {0}; - const char *tmp_str; - uint8_t pad_width = 0; - - while (off < (size - 1)) { - while (*fmt && *fmt != '%') { - printc(s, size, &off, *fmt++); - } - if (*(fmt)++ == '\0' || off == size - 1) { - return off; - } - - /* - * Handle a case where we have "%0N". For example: - * "%04d" - */ - if (*fmt == '0') { - ++fmt; - while (*fmt >= '0' && *fmt <= '9') { - pad_width = pad_width * 10 + (*fmt - '0'); - ++fmt; - } - } - - c = *fmt++; - switch (c) { - case 'c': - c1 = (char )va_arg(ap, int); - printc(s, size, &off, c1); - break; - case 'd': - num = va_arg(ap, int); - itoa(num, num_buf, 10); - - if (pad_width > 0) { - num_len = strlen(num_buf); - for (size_t i = num_len; i < pad_width; ++i) - printc(s, size, &off, '0'); - } - printstr(s, size, &off, num_buf); - break; - case 'p': - num = va_arg(ap, uint64_t); - itoa(num, num_buf, 16); - tmp_len = strlen(num_buf); - /* - * Now we pad this. - * - * XXX TODO: This assumes 64-bits, should be - * cleaned up. - */ - for (size_t i = 0; i < 18 - tmp_len; ++i) { - printc(s, size, &off, '0'); - } - printstr(s, size, &off, num_buf + 2); - break; - case 'x': - num = va_arg(ap, uint64_t); - itoa(num, num_buf, 16); - tmp_len = strlen(num_buf); - printstr(s, size, &off, num_buf + 2); - break; - case 's': - tmp_str = va_arg(ap, const char *); - printstr(s, size, &off, tmp_str); - break; - } - } - - return 0; -} |