diff src/impl/hoofbaby/codec/libav/mingw.d @ 0:3425707ddbf6

Initial import (hopefully this mercurial stuff works...)
author fraserofthenight
date Mon, 06 Jul 2009 08:06:28 -0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/impl/hoofbaby/codec/libav/mingw.d	Mon Jul 06 08:06:28 2009 -0700
@@ -0,0 +1,68 @@
+/**
+ * Hoofbaby -- http://www.dsource.org/projects/hoofbaby
+ * Copyright (C) 2009 Robert Fraser
+ * 
+ * This program is free software; you can redistribute it andor
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+module hoofbaby.codec.libav.mingw;
+
+import tango.stdc.stdlib;
+import tango.stdc.math;
+import tango.stdc.ctype;
+import tango.stdc.stdio;
+import tango.stdc.stdarg;
+import tango.sys.win32.UserGdi;
+
+// Some implementations of MinGW/libc functions required to link with libav*
+
+extern(C) double __strtod(in char* nptr, char** endptr) { return strtod(nptr, endptr); }
+extern(C) uint __fpclassifyf(float x) { return __fpclassify_f(x); }
+extern(C) int __mingw_vfprintf(FILE* stream, char* format, va_list va) { return vfprintf(stream, format, va); }
+extern(C) long _lseeki64(HFILE handle, long offset, int whence) { return _llseek(handle, offset, whence); }
+
+extern(C) int strcasecmp(char* s1, char* s2)
+{
+	while(toupper(*s1) == toupper(*s2))
+	{
+		if(*s1 == '\0')
+			return 0;
+		s1++;
+		s2++;
+	}
+	return toupper(*s1) - toupper(*s2);
+}
+
+extern(C) int strncasecmp(char* s1, char* s2, size_t n)
+{
+	while(toupper(*s1) == toupper(*s2))
+	{
+		if(--n == 0 || *s1 == '\0')
+			return 0;
+		s1++;
+		s2++;
+	}
+	return toupper(*s1) - toupper(*s2);
+}
+
+// This isn't extern(C) in Tango for some odd reason
+extern(C) int snprintf(char* s, size_t n, char* fmt, ...)
+{
+	va_list va;
+	va_start(va, fmt);
+	return _vsnprintf(s, n, fmt, va);
+	va_end(va);
+}
+
+// TODO -- too lazy to implement these until I'm sure they're needed
+extern(C) int gettimeofday(void* tp, void* tz) { assert(false); }
+
+