Browse Source

Add C launcher for Mono-shipped binaries

Miguel de Icaza 14 years ago
parent
commit
45e21ca8be
1 changed files with 35 additions and 0 deletions
  1. 35 0
      scripts/launch.c

+ 35 - 0
scripts/launch.c

@@ -0,0 +1,35 @@
+#define PROFILE_BASE_DIR "/mono/lib/mono/4.0"
+#define MONO_BINARY "/mono/bin/mono"
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <malloc.h>
+
+int
+main (int argc, char *argv [])
+{
+	char **nargv = (char **) malloc (sizeof (char *) * (argc + 1));
+	char *last = strrchr (argv [0], '/');
+	char *command;
+	int i, len;
+
+	if (last == NULL){
+		fprintf (stderr, "Do not know how to invoke the program given [%s]\n", argv [0]);
+		return 1;
+	}
+	len = strlen (last) + strlen (PROFILE_BASE_DIR) + 1;
+	command = malloc (len);
+	if (command == NULL){
+		fprintf (stderr, "Error allocating memory");
+		return 1;
+	}
+	strcpy (command, PROFILE_BASE_DIR);
+	strcat (command, last);
+	nargv [0] = command;
+	nargv [1] = command;
+	
+	for (i = 1; i < argc; i++)
+		nargv [1+i] = argv [i];
+	
+	execvp (MONO_BINARY, nargv);
+}