   // Output the archived data over stdout, which should be piped to stdin
   // on the unarchiver process.
   while true {
-    let status = write(Int32(STDOUT_FILENO), data.bytes, data.length)
+    let status = write(STDOUT_FILENO, data.bytes, data.length)
     if status == data.length { break }
     if errno == EINTR { continue }
     fatalError("write failed")

  var buffer = [UInt8](count: 4096, repeatedValue: 0)

  while true {
    let count = read(Int32(STDIN_FILENO), &buffer, 4096)
    if count == 0 { break }
    if count == -1 {
      if errno == EINTR { continue }

    defer { posix_spawn_file_actions_destroy(&unarchiverActions) }
    guard posix_spawn_file_actions_adddup2(&unarchiverActions,
                                           pipeRead,
                                           STDIN_FILENO) == 0
       && posix_spawn_file_actions_addclose(&unarchiverActions,
                                            pipeWrite) == 0
       else {
