summaryrefslogtreecommitdiff
path: root/src/utils/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils/string.c')
-rw-r--r--src/utils/string.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/utils/string.c b/src/utils/string.c
new file mode 100644
index 0000000..ea588f7
--- /dev/null
+++ b/src/utils/string.c
@@ -0,0 +1,62 @@
+/*
+ * This file is part of Hubbub.
+ * Licensed under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ * Copyright 2008 Andrew Sidwell
+ */
+
+#include <stddef.h>
+#include <inttypes.h>
+#include <stdbool.h>
+#include "utils/string.h"
+
+
+/**
+ * Check if one string starts with another.
+ *
+ * \param a String to compare
+ * \param a_len Length of first string
+ * \param b String to compare
+ * \param b_len Length of second string
+ */
+bool hubbub_string_starts(const uint8_t *a, size_t a_len,
+ const uint8_t *b, size_t b_len)
+{
+ uint8_t z1, z2;
+
+ if (a_len < b_len)
+ return false;
+
+ for (const uint8_t *s1 = a, *s2 = b; b_len > 0; s1++, s2++, b_len--)
+ {
+ z1 = *s1;
+ z2 = *s2;
+ if (z1 != z2) return false;
+ if (!z1) return true;
+ }
+
+ return true;
+}
+
+/**
+ * Check that one string is exactly equal to another
+ *
+ * \param a String to compare
+ * \param a_len Length of first string
+ * \param b String to compare
+ * \param b_len Length of second string
+ */
+bool hubbub_string_match(const uint8_t *a, size_t a_len,
+ const uint8_t *b, size_t b_len)
+{
+ if (a_len != b_len)
+ return false;
+
+ for (const uint8_t *s1 = a, *s2 = b; b_len > 0; s1++, s2++, b_len--)
+ {
+ if (*s1 != *s2) return false;
+ }
+
+ return true;
+}
+