From 3caacff1343d6c19b1d53028534be5b70a02a5e0 Mon Sep 17 00:00:00 2001 From: Timofey Solomko Date: Sun, 9 Jan 2022 14:33:22 +0300 Subject: [PATCH] [swcomp] Add FileHandle closeCompat() extension This is the same one used in tests. --- Sources/swcomp/Containers/TarCommand.swift | 30 +++++-------------- .../Extensions/FileHandle+CloseCompat.swift | 22 ++++++++++++++ 2 files changed, 29 insertions(+), 23 deletions(-) create mode 100644 Sources/swcomp/Extensions/FileHandle+CloseCompat.swift diff --git a/Sources/swcomp/Containers/TarCommand.swift b/Sources/swcomp/Containers/TarCommand.swift index 594def5d..43e3a722 100644 --- a/Sources/swcomp/Containers/TarCommand.swift +++ b/Sources/swcomp/Containers/TarCommand.swift @@ -101,7 +101,7 @@ class TarCommand: Command { return false } } - try handle.closeHandleCompat() + try handle.closeCompat() } } else if let outputPath = self.extract { guard try isValidOutputDirectory(outputPath, create: true) else { @@ -153,7 +153,7 @@ class TarCommand: Command { return false } } - try handle.closeHandleCompat() + try handle.closeCompat() for tuple in directoryAttributes { try fileManager.setAttributes(tuple.attributes, ofItemAtPath: tuple.path) @@ -213,32 +213,16 @@ class TarCommand: Command { var writer = TarWriter(fileHandle: handle, force: self.useFormat ?? .pax) try TarEntry.generateEntries(&writer, inputPath, verbose) try writer.finalize() - try handle.closeHandleCompat() + try handle.closeCompat() } } } } -fileprivate extension FileHandle { - - func closeHandleCompat() throws { - #if compiler(<5.2) - self.closeFile() - #else - if #available(macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4, *) { - try self.close() - } else { - self.closeFile() - } - #endif - } - -} - #if os(Linux) || os(Windows) -@discardableResult -fileprivate func autoreleasepool(_ block: () throws -> T) rethrows -> T { - return try block() -} + @discardableResult + fileprivate func autoreleasepool(_ block: () throws -> T) rethrows -> T { + return try block() + } #endif diff --git a/Sources/swcomp/Extensions/FileHandle+CloseCompat.swift b/Sources/swcomp/Extensions/FileHandle+CloseCompat.swift new file mode 100644 index 00000000..b222c387 --- /dev/null +++ b/Sources/swcomp/Extensions/FileHandle+CloseCompat.swift @@ -0,0 +1,22 @@ +// Copyright (c) 2022 Timofey Solomko +// Licensed under MIT License +// +// See LICENSE for license informations + +import Foundation + +extension FileHandle { + + func closeCompat() throws { + #if compiler(<5.2) + self.closeFile() + #else + if #available(macOS 10.15.4, iOS 13.4, watchOS 6.2, tvOS 13.4, *) { + try self.close() + } else { + self.closeFile() + } + #endif + } + +}