From 90f36b5bb0b1a213b1e6a86b295c6dab13f7a673 Mon Sep 17 00:00:00 2001
From: Armin Luntzer <armin.luntzer@univie.ac.at>
Date: Tue, 21 Nov 2017 11:56:09 +0100
Subject: [PATCH] add generic strncmp()
---
include/kernel/string.h | 1 +
lib/string.c | 33 +++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git a/include/kernel/string.h b/include/kernel/string.h
index 980caa9..7c6e8d5 100644
--- a/include/kernel/string.h
+++ b/include/kernel/string.h
@@ -12,6 +12,7 @@
int sprintf(char *str, const char *format, ...);
int strcmp(const char *s1, const char *s2);
+int strncmp(const char *s1, const char *s2, size_t n);
char *strpbrk(const char *s, const char *accept);
char *strsep(char **stringp, const char *delim);
char *strdup(const char *s);
diff --git a/lib/string.c b/lib/string.c
index 15fa00a..4f330e0 100644
--- a/lib/string.c
+++ b/lib/string.c
@@ -47,6 +47,39 @@ int strcmp(const char *s1, const char *s2)
}
EXPORT_SYMBOL(strcmp);
+
+/**
+ * @brief compare two strings s1 and s2 by comparing at most n bytes
+ *
+ * @returns <0, 0 or > 0 if s1 is less than, matches or greater than s2
+ */
+int strncmp(const char *s1, const char *s2, size_t n)
+{
+ unsigned char c1, c2;
+
+ while (n) {
+
+ c1 = (*(s1++));
+ c2 = (*(s2++));
+
+ if (c1 != c2) {
+ if (c1 < c2)
+ return -1;
+ else
+ return 1;
+ }
+
+ if (!c1)
+ break;
+
+ n--;
+ }
+
+ return 0;
+}
+EXPORT_SYMBOL(strncmp);
+
+
/**
* @brief locate first occurrence of a set of characters in string accept
*
--
GitLab