summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/char.c')
-rw-r--r--src/core/char.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/core/char.c b/src/core/char.c
new file mode 100644
index 0000000..249ef1c
--- /dev/null
+++ b/src/core/char.c
@@ -0,0 +1,46 @@
+#include <string.h>
+
+#include "char.h"
+
+/* See: "char.c" */
+JH_char JH_char_to_lowercase (const JH_char c)
+{
+ if ((c >= 'A') && (c <= 'Z'))
+ {
+ return 'z' - ('Z' - c);
+ }
+
+ return c;
+}
+
+/* See: "char.c" */
+int JH_word_cmp
+(
+ const JH_char word_a [const static 1],
+ const size_t word_a_size,
+ const JH_char word_b [const static 1],
+ const size_t word_b_size
+)
+{
+ int result;
+
+ if (word_a_size < word_b_size)
+ {
+ result =
+ strncmp((const char *) word_a, (const char *) word_b, word_a_size);
+
+ return (result == 0) ? -1 : result;
+ }
+ else if (word_b_size < word_a_size)
+ {
+ result =
+ strncmp((const char *) word_a, (const char *) word_b, word_b_size);
+
+ return (result == 0) ? 1 : result;
+ }
+ else
+ {
+ return strncmp((const char *) word_a, (const char *) word_b, word_a_size);
+ }
+}
+