summaryrefslogtreecommitdiff
path: root/compiler/ghc-inplace.c
blob: 8cddc898a5e7f8a3f04efbf96616c797c7c3d6c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <shell-tools.c>

int main(int argc, char **argv) {
    char **args;
    args = malloc(sizeof(char *) * (argc + 4));
    if (args == NULL) {
        fprintf(stderr, "Malloc failed\n");
        exit(1);
    }
    args[0] = "GHC_PATH"; /* Gets replaced by sed */
    args[1] = "-BTOP_ABS"; /* Gets replaced by sed */
    args[2] = "-dynload";
    args[3] = "wrapped";
    if ((argc >= 2) && (strcmp(argv[1], "-v") == 0)) {
        printf("Using %s %s %s %s\n", args[0], args[1], args[2], args[3]);
        fflush(stdout);
    }
    memcpy(args + 4, argv + 1, sizeof(char *) * (argc - 1));
    args[argc+3] = NULL;
    return run(argv[0],
               "GHC_PATH", /* Gets replaced by sed */
               argc + 3,
               args);
}