Add -B prefix support. Small consistency cleanups.

diff --git a/tools/winegcc/utils.c b/tools/winegcc/utils.c
index af8c771..ef334e0 100644
--- a/tools/winegcc/utils.c
+++ b/tools/winegcc/utils.c
@@ -273,11 +273,26 @@
     return file_na;
 }
 
-void spawn(const strarray* args)
+void spawn(const char* prefix, const strarray* args)
 {
     int i, status;
     strarray* arr = strarray_dup(args);
-    const char **argv = arr->base;
+    const char** argv = arr->base;
+    char* prog = 0;
+
+    if (prefix)
+    {
+        const char* p;
+	struct stat st;
+
+	if (!(p = strrchr(argv[0], '/'))) p = argv[0];
+	prog = strmake("%s/%s", prefix, p);
+	if (stat(prog, &st) == 0)
+	{
+	    if ((st.st_mode & S_IFREG) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
+		argv[0] = prog;
+	}
+    }
 
     strarray_add(arr, NULL);
     if (verbose)
@@ -293,5 +308,6 @@
 	exit(3);
     }
 
+    free(prog);
     strarray_free(arr);
 }