summaryrefslogtreecommitdiff
path: root/lib/string/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/string/string.c')
-rw-r--r--lib/string/string.c43
1 files changed, 43 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;
+}