chiark / gitweb /
zoneconf.in: Split out the temporary-directory machinery.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 26 Mar 2015 02:09:27 +0000 (02:09 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Thu, 26 Mar 2015 02:15:15 +0000 (02:15 +0000)
Also, don't mention its name more than once.

zoneconf.in

index 859fa6798da896b006215242d2f952f35f4907fc..137c2b5e67fd4e0ec438cf45265f117bf9dc1b73 100755 (executable)
@@ -1136,6 +1136,16 @@ proc output-file-name {view} {
   return [string map [list %v $view] $ZONECFG(conf-file)]
 }
 
+proc temporary-directory {} {
+  ## Create a temporary directory and set as the working directory.
+
+  global ZONECFG
+  set tmp [file join $ZONECFG(home-dir) "tmp"]
+  file mkdir $tmp
+  cd $tmp
+  return $tmp
+}
+
 proc compute-zone-properties {view config} {
   ## Derive interesting information from the zone configuration plist CONFIG,
   ## relative to the stated server VIEW.  Return a new plist.
@@ -1404,7 +1414,7 @@ provided by the named USER."
   isolate [list confspc-eval toplevel [list source $CONFFILE]]
 
   ## Make sure there's a temporary directory.
-  file mkdir [file join $ZONECFG(home-dir) "tmp"]
+  set tmpdir [temporary-directory]
 
   ## Keep track of cleanup jobs.
   set cleanup {}
@@ -1435,8 +1445,7 @@ provided by the named USER."
     ## Make a new temporary file to read the zone into.
     set pid [pid]
     for {set i 0} {$i < 1000} {incr i} {
-      set tmp [file join $ZONECFG(home-dir) "tmp" \
-                  "tmp.$pid.$i.$user.$name"]
+      set tmp [file join $tmpdir "tmp.$pid.$i.$user.$name"]
       if {![catch { set chan [open $tmp {WRONLY CREAT EXCL}] } msg]} {
        break
       } elseif {[string equal [lindex $errorCode 0] POSIX] && \