17 } |
18 } |
18 |
19 |
19 |
20 |
20 int main(int argc, char *argv[]) |
21 int main(int argc, char *argv[]) |
21 { |
22 { |
22 char **cmd_line = NULL; |
23 char **cmd_line = NULL, *cmd = NULL, *dcmd = NULL, *bcmd = NULL, *dname = NULL, *bname = NULL; |
23 int i = 0; |
24 int i = 0; |
|
25 |
|
26 dcmd = strdup(argv[0]); dname = dirname(dcmd); |
|
27 bcmd = strdup(argv[0]); bname = basename(bcmd); |
24 |
28 |
25 cmd_line = malloc(sizeof(char *) * (argc + 1)); |
29 cmd_line = malloc(sizeof(char *) * (argc + 1)); |
26 if (cmd_line == NULL) fail("Failed to allocate command line"); |
30 if (cmd_line == NULL) fail("Failed to allocate command line"); |
27 |
31 |
28 cmd_line[0] = malloc(strlen(argv[0]) + 5); |
32 cmd = cmd_line[0]; |
29 if (cmd_line[0] == NULL) fail("Failed to allocate command line"); |
33 cmd = malloc(strlen(dname) + strlen(bname) + strlen("/lib/scripts/.run") + 1); |
30 |
34 if (cmd == NULL) fail("Failed to allocate command name"); |
31 strcpy(cmd_line[0], argv[0]); |
35 sprintf(cmd, "%s/lib/scripts/%s.run", dname, bname); |
32 strcat(cmd_line[0], ".run"); |
|
33 |
36 |
34 for (i = 1; i < argc; i++) cmd_line[i] = argv[i]; |
37 for (i = 1; i < argc; i++) cmd_line[i] = argv[i]; |
35 |
38 |
36 cmd_line[argc] = NULL; |
39 cmd_line[argc] = NULL; |
37 |
40 |
38 execvp(cmd_line[0], cmd_line); |
41 execvp(cmd, cmd_line); |
39 fail("Failed to execute application script"); |
42 fprintf(stderr, "Failed to execute application script \"%s\"\n", cmd); |
|
43 exit(2); |
40 } |
44 } |
41 |
|