summaryrefslogtreecommitdiff
path: root/lib/string
diff options
context:
space:
mode:
authorMichal Idziorek <m.i@gmx.at>2015-05-18 00:48:07 +0200
committerMichal Idziorek <m.i@gmx.at>2015-05-18 00:48:07 +0200
commitdb22b587966b4a4eaa47536f32ca812532446bcb (patch)
treeb6d471f5232973713ef64d9c81feefef51ee5eaf /lib/string
parent042e25e19b5fc0cec1d47440c26246c886cf39f6 (diff)
heavy refactoring underway
Diffstat (limited to 'lib/string')
-rw-r--r--lib/string/string.c43
-rw-r--r--lib/string/string.h8
2 files changed, 51 insertions, 0 deletions
diff --git a/lib/string/string.c b/lib/string/string.c
new file mode 100644
index 0000000..be2c7ed
--- /dev/null
+++ b/lib/string/string.c
@@ -0,0 +1,43 @@
+#include <stdbool.h>
+#include "string.h"
+
+void* memcpy(void* restrict dstptr, const void* restrict srcptr, int size)
+{
+ unsigned char* dst = (unsigned char*) dstptr;
+ const unsigned char* src = (const unsigned char*) srcptr;
+ for ( int i = 0; i < size; i++ )
+ dst[i] = src[i];
+ return dstptr;
+}
+
+
+// extra function for non-null terminated
+//length 0 for null terminated strings;
+int strcmp_l(char *str1, char *str2, int length)
+{
+ int i=0;
+ while(true)
+ {
+
+ if(str1[i]!=str2[i])return str1[i]-str2[i];
+ i++;
+ if(i==length) return 0;
+
+ if( length==0 && (str1[i]==0 || str2[i]==0 ) )
+ return str1[i]-str2[i];
+
+ }
+
+}
+static int strcmp(char *str1, char *str2)
+{
+ return strcmp_l(str1,str2,0);
+}
+
+
+int strlen(const char* string)
+{
+ int result = 0;
+ while ( string[result] )result++;
+ return result;
+}
diff --git a/lib/string/string.h b/lib/string/string.h
new file mode 100644
index 0000000..e41eb94
--- /dev/null
+++ b/lib/string/string.h
@@ -0,0 +1,8 @@
+#ifndef STRING_H
+#define STRING_H
+
+
+void* memcpy(void* restrict dstptr, const void* restrict srcptr, int size);
+int strcmp_l(char *str1, char *str2, int length);
+
+#endif