aboutsummaryrefslogtreecommitdiff
path: root/src/userspace/mlibc/string/strlen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/userspace/mlibc/string/strlen.c')
-rw-r--r--src/userspace/mlibc/string/strlen.c35
1 files changed, 0 insertions, 35 deletions
diff --git a/src/userspace/mlibc/string/strlen.c b/src/userspace/mlibc/string/strlen.c
deleted file mode 100644
index f652495..0000000
--- a/src/userspace/mlibc/string/strlen.c
+++ /dev/null
@@ -1,35 +0,0 @@
-#include <mlibc/stdlib.h>
-
-size_t strlen(const char *str)
-{
- const char *char_ptr;
- const unsigned long int *longword_ptr;
- unsigned long int longword, himagic, lomagic;
-
- for (char_ptr = str; ((unsigned long int)char_ptr & (sizeof(longword) - 1)) != 0;
- ++char_ptr)
- if (*char_ptr == '\0')
- return char_ptr - str;
-
- longword_ptr = (unsigned long int *)char_ptr;
-
- himagic = 0x80808080L;
- lomagic = 0x01010101L;
-
- for (;;) {
- longword = *longword_ptr++;
-
- if (((longword - lomagic) & himagic) != 0) {
- const char *cp = (const char *)(longword_ptr - 1);
-
- if (cp[0] == 0)
- return cp - str;
- if (cp[1] == 0)
- return cp - str + 1;
- if (cp[2] == 0)
- return cp - str + 2;
- if (cp[3] == 0)
- return cp - str + 3;
- }
- }
-} \ No newline at end of file