summaryrefslogtreecommitdiffstats
path: root/usr.bin/perl/perl.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/perl/perl.c')
-rw-r--r--usr.bin/perl/perl.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/usr.bin/perl/perl.c b/usr.bin/perl/perl.c
index 15a155d..7bd52ad 100644
--- a/usr.bin/perl/perl.c
+++ b/usr.bin/perl/perl.c
@@ -44,15 +44,19 @@ int
main(int argc __unused, char *argv[])
{
char path[PATH_MAX];
- const char *p, *q, *self;
+ const char *cmd, *p, *q, *self;
size_t len;
self = argv[0];
+ if ((cmd = strrchr(self, '/')) == NULL)
+ cmd = self;
+ else
+ cmd++;
argv[0] = path;
for (p = q = getenv("PATH"); p && *p && *q; p = q + 1) {
for (q = p; *q && *q != ':'; ++q)
/* nothing */ ;
- len = snprintf(path, sizeof path, "%.*s/perl", (int)(q - p), p);
+ len = snprintf(path, sizeof path, "%.*s/%s", (int)(q - p), p, cmd);
if (len >= PATH_MAX || strcmp(path, self) == 0)
continue;
execve(path, argv, environ);
OpenPOWER on IntegriCloud