Wrap gcc on Windows, to provide the -B flags
[ghc-hetmet.git] / driver / utils / getLocation.c
diff --git a/driver/utils/getLocation.c b/driver/utils/getLocation.c
new file mode 100644 (file)
index 0000000..fcbe1b9
--- /dev/null
@@ -0,0 +1,40 @@
+
+#include "getLocation.h"
+#include <stdio.h>
+#include <windows.h>
+
+static void die(char *msg) {
+    fprintf(stderr, "%s", msg);
+    exit(1);
+}
+
+char *getExecutable(void) {
+    char *p;
+    int i;
+    int r;
+
+    i = 2048; /* plenty, PATH_MAX is 512 under Win32 */
+    p = malloc(i);
+    if (p == NULL) {
+        die("Malloc failed\n");
+    }
+    r = GetModuleFileNameA(NULL, p, i);
+    if (r == 0) {
+        die("getModuleFileName failed\n");
+    }
+    return p;
+}
+
+char *getExecutablePath(void) {
+    char *p;
+    char *f;
+
+    p = getExecutable();
+    f = strrchr(p, '\\');
+    if (f == NULL) {
+        die("No '\\' in executable location\n");
+    }
+    f[0] = '\0';
+    return p;
+}
+