aboutsummaryrefslogtreecommitdiff
path: root/libc/str.c
diff options
context:
space:
mode:
authorMarvin Borner2021-03-26 21:55:50 +0100
committerMarvin Borner2021-03-26 22:02:20 +0100
commit05498860e8f7b1e8bb27880bc7526de026694804 (patch)
tree3bddf16e9439a950a3810d45e42a5cefdbcb7663 /libc/str.c
parenta96e9c4c858d47f61b89d879aa0ce6a02bdacb38 (diff)
Renamed libs
Cleaner and more flexible.
Diffstat (limited to 'libc/str.c')
-rw-r--r--libc/str.c207
1 files changed, 0 insertions, 207 deletions
diff --git a/libc/str.c b/libc/str.c
deleted file mode 100644
index ba16920..0000000
--- a/libc/str.c
+++ /dev/null
@@ -1,207 +0,0 @@
-// MIT License, Copyright (c) 2020 Marvin Borner
-
-#include <def.h>
-#include <errno.h>
-#include <mem.h>
-#include <str.h>
-
-u32 strlen(const char *s)
-{
- const char *ss = s;
- while (*ss)
- ss++;
- return ss - s;
-}
-
-char *strcpy(char *dst, const char *src)
-{
- char *q = dst;
- const char *p = src;
- char ch;
-
- do {
- *q++ = ch = *p++;
- } while (ch);
-
- return dst;
-}
-
-char *strncpy(char *dst, const char *src, u32 n)
-{
- char *q = dst;
-
- while (n-- && (*dst++ = *src++))
- ;
-
- return q;
-}
-
-int strcmp(const char *s1, const char *s2)
-{
- const u8 *c1 = (const u8 *)s1;
- const u8 *c2 = (const u8 *)s2;
- u8 ch;
- int d = 0;
-
- while (1) {
- d = (int)(ch = *c1++) - (int)*c2++;
- if (d || !ch)
- break;
- }
-
- return d;
-}
-
-int strncmp(const char *s1, const char *s2, u32 n)
-{
- const u8 *c1 = (const u8 *)s1;
- const u8 *c2 = (const u8 *)s2;
- u8 ch;
- int d = 0;
-
- while (n--) {
- d = (int)(ch = *c1++) - (int)*c2++;
- if (d || !ch)
- break;
- }
-
- return d;
-}
-
-char *strchr(char *s, int c)
-{
- while (*s != (char)c) {
- if (!*s)
- return NULL;
- s++;
- }
-
- return s;
-}
-
-char *strrchr(char *s, int c)
-{
- char *ret = 0;
-
- do {
- if (*s == c)
- ret = s;
- } while (*s++);
-
- return ret;
-}
-
-char *strcat(char *dst, const char *src)
-{
- strcpy(strchr(dst, '\0'), src);
- return dst;
-}
-
-char *strncat(char *dst, const char *src, u32 n)
-{
- strncpy(strchr(dst, '\0'), src, n);
- return dst;
-}
-
-char *strinv(char *s)
-{
- u32 s_str = strlen(s);
-
- int iterations = (int)s_str / 2;
- for (int i = 0; i < iterations; i++) {
- char aux = s[i];
- s[i] = s[(s_str - i) - 1];
- s[(s_str - i) - 1] = aux;
- }
- return s;
-}
-
-char *strdup(const char *s)
-{
- int l = strlen(s) + 1;
- char *d = malloc(l);
-
- memcpy(d, s, l);
-
- return d;
-}
-
-const char *strerror(u32 error)
-{
- switch (error) {
- case 0:
- return "Success";
- case EPERM:
- return "Operation not permitted";
- case ENOENT:
- return "No such file or directory";
- case ESRCH:
- return "No such process";
- case EINTR:
- return "Interrupted system call";
- case EIO:
- return "I/O error";
- case ENXIO:
- return "No such device or address";
- case E2BIG:
- return "Argument list too long";
- case ENOEXEC:
- return "Exec format error";
- case EBADF:
- return "Bad file number";
- case ECHILD:
- return "No child processes";
- case EAGAIN:
- return "Try again";
- case ENOMEM:
- return "Out of memory";
- case EACCES:
- return "Permission denied";
- case EFAULT:
- return "Bad address";
- case ENOTBLK:
- return "Block device required";
- case EBUSY:
- return "Device or resource busy";
- case EEXIST:
- return "File exists";
- case EXDEV:
- return "Cross-device link";
- case ENODEV:
- return "No such device";
- case ENOTDIR:
- return "Not a directory";
- case EISDIR:
- return "Is a directory";
- case EINVAL:
- return "Invalid argument";
- case ENFILE:
- return "File table overflow";
- case EMFILE:
- return "Too many open files";
- case ENOTTY:
- return "Not a typewriter";
- case ETXTBSY:
- return "Text file busy";
- case EFBIG:
- return "File too large";
- case ENOSPC:
- return "No space left on device";
- case ESPIPE:
- return "Illegal seek";
- case EROFS:
- return "Read-only file system";
- case EMLINK:
- return "Too many links";
- case EPIPE:
- return "Broken pipe";
- case EDOM:
- return "Math argument out of domain of func";
- case ERANGE:
- return "Math result not representable";
- case EMAX:
- return "Max errno";
- default:
- return "Unknown error";
- }
-}