--- toast	2003/08/10 23:50:48	1.170
+++ toast	2003/08/11 20:36:42	1.171
@@ -1,13 +1,20 @@
 #!/usr/bin/perl
 
-require 5.6.0;  # eval { open(1,2,3) } if 0;
-use strict;     # $^H |= 0x602;
-use warnings;   # $^W = 1;
+use 5;
 
-eval('$dummy = 1') && warn("use strict");
-{ my($ok); { local $SIG{'__WARN__'} = sub { die }; $ok = !eval('1 + "a"') }
-    $ok || warn("use warnings"); }
+BEGIN { $^W = 1 } # use warnings
+BEGIN { $SIG{'__DIE__'} = sub { warn(@_) } }
+use strict; # if available
+BEGIN { $SIG{'__DIE__'} = 'DEFAULT' }
 
+# warn if "use warnings" and "use strict" are not both in effect
+if($^V) # 5.0 emits spurious message
+{
+  { my($ok); { local $SIG{'__WARN__'} = sub { die };
+      $ok = !eval('1 + "a"') } $ok || warn("use warnings"); }
+  { eval('$foo = 1') && warn("use strict") }
+}
+
 ##############################################################################
 
 sub trace($)
@@ -337,7 +344,7 @@
 sub md(@)
 {
   announce("mkdir", @_);
-  mkdir($_) || error("mkdir $_: $!") foreach @_;
+  mkdir($_, 0777) || error("mkdir $_: $!") foreach @_;
   true;
 }
 
@@ -347,7 +354,7 @@
   {
     next if -d;
     announce("mkdir", $_);
-    if(!mkdir($_))
+    if(!mkdir($_, 0777))
     {
       my($err) = $!;
       -d || error("mkdir $_: $err");
@@ -438,7 +445,7 @@
   my($tempname) = addtmp($realname);
   local(*FILE);
   explain("creating $tempname");
-  open(FILE, ">", $tempname) || error("open $tempname for write: $!");
+  open(FILE, ">$tempname") || error("open $tempname for write: $!");
   print FILE @contents;
   close(FILE) || error("close $tempname for write: $!");
   safechmod($mode, $tempname) if $mode;
@@ -461,7 +468,7 @@
 {
   my($sub, $file) = @_;
   local(*FILE, $_);
-  open(FILE, "<", $file) || error("open $file for read: $!");
+  open(FILE, "<$file") || error("open $file for read: $!");
   while(defined($_ = <FILE>) && &$sub($_)) { }
   close(FILE) || error("close $file for read: $!");
   !defined($_);
@@ -575,7 +582,7 @@
   local(*HANDLE) = shift;
   my($prog, @args) = @_;
   announce($prog, @args);
-  return true if open(HANDLE, "-|", "$prog @args");
+  return true if open(HANDLE, "$prog @args |");
   explain("failed to exec $prog: $!");
   return false;
 }
@@ -621,7 +628,7 @@
   $host eq "localhost" || error("bad file-url hostname: $host");
   my($source) = urlunescape($path);
   explain("reading $source");
-  open(HANDLE, "<", $source) || error("open $source for read: $!");
+  open(HANDLE, "<$source") || error("open $source for read: $!");
 }
 
 sub opensshurl(*$)
@@ -664,7 +671,7 @@
 
   local(*SOURCE, *DEST);
   explain("creating $dest");
-  open(DEST, ">", $dest) || error("open $dest for write: $!");
+  open(DEST, ">$dest") || error("open $dest for write: $!");
   openurl(*SOURCE, $url);
 
   my($buf, $result);
@@ -927,7 +934,7 @@
 {
   my($file) = $_;
   local(*FILE);
-  open(FILE, "<", $file) || error("open $file for read: $!");
+  open(FILE, "<$file") || error("open $file for read: $!");
   my($buf);
   defined(read(FILE, $buf, magicbufsize)) || error("read $file: $!");
   close(FILE) || error("close $file for read: $!");
@@ -1040,7 +1047,7 @@
     chdir($outdir) || error("chdir $outdir: $!");
     my($type) = magicfile($infile);
     exec("unzip", "-qo", $infile) || error("unzip: $!") if $type eq ".zip";
-    open(STDIN, "<", $infile) || error("open $infile for stdin: $!");
+    open(STDIN, "<$infile") || error("open $infile for stdin: $!");
     extractstdin($type);
     error;
   }
@@ -1065,7 +1072,7 @@
 
   local(*SAVE);
   open(SAVE, "<&STDIN") || error("save stdin: $!");
-  open(STDIN, "<", $file) || error("open $file: $!");
+  open(STDIN, "<$file") || error("open $file: $!");
   my($result) = `$cmd`;
   open(STDIN, "<&SAVE") || error("restore stdin: $!");
 
@@ -1272,7 +1279,7 @@
         $version = "unknown" . ($max + 1);
         $verdir = pkgpath($name, $version);
       }
-      $errmsg = mkdir($verdir) ? false : $!;
+      $errmsg = mkdir($verdir, 0777) ? false : $!;
       error("mkdir $verdir: $errmsg") if $errmsg && !-d($verdir);
     }
     announce("mkdir", $verdir);
@@ -1300,7 +1307,7 @@
   geturl($url, $file);
 
   local(*FILE);
-  open(FILE, "<", $file) || error("open $file: $!");
+  open(FILE, "<$file") || error("open $file: $!");
   my($header);
   read(FILE, $header, 128) || error("read $file: $!");
   my($redir);
@@ -1494,7 +1501,7 @@
       my($dir, $elem) = "";
       for $component (split(/\//, $_))
       {
-        $dir ne "" && mkdir("$rootdir$dir") &&
+        $dir ne "" && mkdir("$rootdir$dir", 0777) &&
             print("$myname: created directory $rootdir$dir");
         $dir .= "/$component";
       }
@@ -2253,7 +2260,7 @@
   {
     $build++;
     $builddir = path($verdir, $build);
-    $errmsg = mkdir($builddir) ? false : $!;
+    $errmsg = mkdir($builddir, 0777) ? false : $!;
     error("mkdir $builddir: $errmsg") if $errmsg && !-d($builddir);
   }
   announce("mkdir", $builddir);
@@ -2291,7 +2298,7 @@
   $SIG{INT} = "IGNORE";
   my($tmplogname) = addtmp(path($builddir, buildlog));
   local(*LOG);
-  open(LOG, ">", $tmplogname) || error("open $tmplogname for write: $!");
+  open(LOG, ">$tmplogname") || error("open $tmplogname for write: $!");
 
   while(<CHILD>)
   {
@@ -2400,7 +2407,7 @@
     my($path) = @_;
     error("$path already locked") if $locks{$path};
     local(*LOCK);
-    open(LOCK, "<", $path) || error("open $path: $!");
+    open(LOCK, "<$path") || error("open $path: $!");
     $locks{$path} = *LOCK{IO};
     if(!flock(LOCK, 6)) # LOCK_EX | LOCK_NB
     {
@@ -2736,7 +2743,7 @@
 {
   local(*SCRIPT) = @_;
   my($package, $file) = caller(0);
-  open(SCRIPT, "<", $file) || error("open $file for read: $!");
+  open(SCRIPT, "<$file") || error("open $file for read: $!");
 }
 
 sub depodify($)
@@ -2863,7 +2870,7 @@
   local(*PAGER);
   if($pager)
   {
-    return false unless open(PAGER, "|-", $pager);
+    return false unless open(PAGER, "| $pager");
     $out = \*PAGER;
   }
   local(*SCRIPT);