fix types
[compress.git] / code.c
diff --git a/code.c b/code.c
new file mode 100644 (file)
index 0000000..17ef4d0
--- /dev/null
+++ b/code.c
@@ -0,0 +1,65 @@
+#include <stddef.h>
+#include <stdio.h>
+#include "debug.h"
+
+#include "code.h"
+
+/* concatenate code */
+
+int codcat (char *dst, size_t n, char *src)
+{
+    while ((*dst != 0) && (n > 0)) {
+        n--;
+        dst++;
+    }
+    
+    return (n > 0) ? codcpy (dst, n, src) : -1;
+}
+
+/* compare 2 codes */
+
+int codcmp (char *cod1, char *cod2)
+{
+    int i = -1;
+
+    do {
+        i++;
+        if (cod1[i] != cod2[i]) {
+            return (cod1[i] < cod2[i]) ? -1 : 1;
+        }
+    } while (cod1[i] != 0);
+
+    return 0;
+}
+
+/* copy code */
+
+int codcpy (char *dst, size_t n, char *src)
+{
+    size_t i;
+
+    for (i = 0; i < n; i++) {
+        dst[i] = src[i];
+        if (src[i]== 0) {
+            return i;
+        }
+    }
+    VERBOSE (ERROR, printf ("Buffer too short\n"));
+
+    return -1;
+}
+
+/* code length */
+
+int codlen (char *code)
+{
+    int i = 0;
+
+    while (code[i] != 0) {
+        i++;
+    }
+
+    return i;
+}
+
+// vim: ts=4 sw=4 et