diff --git a/bin/mkpackage.pike b/bin/mkpackage.pike
index e7b7e28eb2f3883d9c5cfbc0c04129eac8c6c3ca..6ac2827279c51ffe2c320460b011283ddf048ffb 100644
--- a/bin/mkpackage.pike
+++ b/bin/mkpackage.pike
@@ -63,6 +63,11 @@ class Package
     return sprintf("%ctmP%07x", c, random(0xfffffff));
   }
 
+  string basename(string path)
+  {
+    return (path/"/")[-1];
+  }
+  
   string make(string package_filename)
   {
     string setup_filename = unique_name('S')+".sh";
@@ -71,7 +76,7 @@ class Package
     string setup = ("#!/bin/sh\n"
 		    "TARFILE=\"$1\"; shift; ARGS=''\n"
 		    "CONTENTS=`tar tf \"$TARFILE\" | sed -ne '/^"+
-		    (replace(install_filename, ".", "\\.")/"/")[-1]+"/,$p'`\n"
+		    replace(basename(install_filename), ".", "\\.")+"/,$p'`\n"
 		    // Check all arguments for possible options.
 		    "while [ $# != 0 ]\n"
 		    "do\n"
@@ -89,8 +94,9 @@ class Package
 		    "mkdir "+unpack_directory+"\n"
 		    "(cd "+unpack_directory+"\n"
 		    " tar xf ../\"$TARFILE\" $CONTENTS\n"
-		    " ./"+(pike_filename/"/")[-1]+" "
-		                "--script \"`pwd`\"/"+install_filename+")\n"
+		    " ./"+basename(pike_filename)+" "
+	                     "--script \"`pwd`\"/"+
+		                            basename(install_filename)+")\n"
 		    "rm -rf "+setup_filename+" "+unpack_directory+"\n");
     
     string bootstrap = sprintf("#!/bin/sh\n"