+/* String functions */
+void strsub(char *str, char find, char repl)
+{
+ for (char *cur = str; *cur; cur++)
+ if (*cur == find)
+ *cur = repl;
+}
+
+/* Memory functions */
+void *alloc0(int size)
+{
+ void *data = calloc(1, size);
+ if (!data)
+ error("memory allocation failed");
+ return data;
+}
+
+/* Debugging functions */
+void debug(char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ message(NULL, "debug", fmt, ap);
+ va_end(ap);
+}
+
+void error(char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ fflush(stdout);
+ fflush(stderr);
+ message(stderr, "error", fmt, ap);