Re: RC1 on Playstation2
Tim Jenness [Tue, 11 Jun 2002 11:55:40 +0000 (01:55 -1000)]
Message-ID: <Pine.LNX.4.44.0206111135130.31715-100000@lapaki>

p4raw-id: //depot/perl@17194

perl.c

diff --git a/perl.c b/perl.c
index 8566e5f..e4ca5a0 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -3528,6 +3528,17 @@ S_procself_val(pTHX_ SV *sv, char *arg0)
 {
     char buf[MAXPATHLEN];
     int len = readlink(PROCSELFEXE_PATH, buf, sizeof(buf) - 1);
+
+    /* On Playstation2 Linux V1.0 (kernel 2.2.1) readlink(/proc/self/exe)
+       includes a spurious NUL which will cause $^X to fail in system
+       or backticks (this will prevent extensions from being built and
+       many tests from working). readlink is not meant to add a NUL.
+       Normal readlink works fine.
+     */
+    if (len > 0 && buf[len-1] == '\0') {
+      len--;
+    }
+
     /* FreeBSD's implementation is acknowledged to be imperfect, sometimes
        returning the text "unknown" from the readlink rather than the path
        to the executable (or returning an error from the readlink).  Any valid