Lines 156-162
Link Here
|
156 |
{ |
156 |
{ |
157 |
return NULL; |
157 |
return NULL; |
158 |
} |
158 |
} |
159 |
/* walk backwards through the list */ |
159 |
/* Walk backwards through the list. */ |
160 |
while (n--) |
160 |
while (n--) |
161 |
{ |
161 |
{ |
162 |
if (! ret) |
162 |
if (! ret) |
Lines 167-173
Link Here
|
167 |
return ret; |
167 |
return ret; |
168 |
} |
168 |
} |
169 |
|
169 |
|
170 |
int main(__attribute__((unused)) int argc, char** argv) |
170 |
int main(int argc, char** argv) |
171 |
{ |
171 |
{ |
172 |
if (strlen(program_description) == 0) |
172 |
if (strlen(program_description) == 0) |
173 |
abort(); |
173 |
abort(); |
Lines 199-218
Link Here
|
199 |
|
199 |
|
200 |
if (strchr(EPYTHON, '/')) |
200 |
if (strchr(EPYTHON, '/')) |
201 |
{ |
201 |
{ |
202 |
argv[0] = (char*) EPYTHON; |
202 |
fprintf(stderr, "Invalid value of EPYTHON variable or invalid configuration of Python wrapper\n"); |
203 |
execv(EPYTHON, argv); |
|
|
204 |
return EXIT_ERROR; |
203 |
return EXIT_ERROR; |
205 |
} |
204 |
} |
206 |
|
205 |
|
|
|
206 |
/* Update argv[0], if a script with a Python shebang is probably being executed. |
207 |
* argv[0] can be "python", when "#!/usr/bin/env python" shebang is used. */ |
208 |
if (argc >= 2 && (argv[0][0] == '/' || strcmp(argv[0], "python") == 0) && argv[1][0] == '/') |
209 |
argv[0] = argv[1]; |
210 |
else if (argc >= 3 && argv[0][0] == '/' && argv[1][0] == '-' && argv[2][0] == '/') |
211 |
argv[0] = argv[2]; |
212 |
|
207 |
const char* path = find_path(argv[0]); |
213 |
const char* path = find_path(argv[0]); |
208 |
if (*path) |
214 |
if (path) |
209 |
{ |
215 |
{ |
210 |
argv[0] = dir_cat(path, EPYTHON); |
216 |
execv(dir_cat(path, EPYTHON), argv); |
211 |
execv(argv[0], argv); |
|
|
212 |
/* If this failed, then just search the PATH. */ |
217 |
/* If this failed, then just search the PATH. */ |
213 |
} |
218 |
} |
214 |
|
219 |
|
215 |
argv[0] = (char*) EPYTHON; |
|
|
216 |
execvp(EPYTHON, argv); |
220 |
execvp(EPYTHON, argv); |
217 |
return EXIT_ERROR; |
221 |
return EXIT_ERROR; |
218 |
} |
222 |
} |