summaryrefslogtreecommitdiff
path: root/compat.c
diff options
context:
space:
mode:
Diffstat (limited to 'compat.c')
-rw-r--r--compat.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/compat.c b/compat.c
new file mode 100644
index 0000000..1530bd5
--- /dev/null
+++ b/compat.c
@@ -0,0 +1,41 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+
+int
+xstrcasecmp(const char *_l, const char *_r) {
+ const unsigned char *l = (void *)_l, *r = (void *)_r;
+ for(; *l && *r && (*l == *r || tolower(*l) == tolower(*r)); l++, r++);
+ return tolower(*l) - tolower(*r);
+}
+
+int
+xstrncasecmp(const char *_l, const char *_r, size_t n) {
+ const unsigned char *l=(void *)_l, *r=(void *)_r;
+ if(!n--)
+ return 0;
+ for(; *l && *r && n && (*l == *r || tolower(*l) == tolower(*r)); l++, r++, n--);
+ return tolower(*l) - tolower(*r);
+}
+
+void *
+xstrdup(const char *s) {
+ size_t len = strlen(s) + 1;
+ void *p = malloc(len);
+ if(p)
+ memcpy(p, s, len);
+ return p;
+}
+
+int
+xmkdir(const char *path, mode_t mode) {
+/* TODO: fix for mingw */
+#if MINGW
+ return mkdir(path);
+#else
+ return mkdir(path, mode);
+#endif
+}