File tree Expand file tree Collapse file tree 1 file changed +14
-22
lines changed Expand file tree Collapse file tree 1 file changed +14
-22
lines changed Original file line number Diff line number Diff line change @@ -1720,39 +1720,31 @@ open class FileManager : NSObject {
1720
1720
#if os(Windows)
1721
1721
NSUnimplemented ( )
1722
1722
#else
1723
- let fd1 = open ( file1Rep, O_RDONLY)
1724
- guard fd1 >= 0 else {
1723
+ guard let file1 = FileHandle ( forReadingAtPath: String ( cString: file1Rep) ) else {
1725
1724
return false
1726
1725
}
1727
- defer { close ( fd1 ) }
1728
-
1729
- let fd2 = open ( file2Rep , O_RDONLY )
1730
- guard fd2 >= 0 else {
1726
+
1727
+ defer { try ? file1 . close ( ) }
1728
+
1729
+ guard let file2 = FileHandle ( forReadingAtPath : String ( cString : file2Rep ) ) else {
1731
1730
return false
1732
1731
}
1733
- defer { close ( fd2) }
1734
-
1735
- let buffer1 = UnsafeMutablePointer< UInt8> . allocate( capacity: bufSize)
1736
- let buffer2 = UnsafeMutablePointer< UInt8> . allocate( capacity: bufSize)
1737
- defer {
1738
- buffer1. deallocate ( )
1739
- buffer2. deallocate ( )
1740
- }
1741
-
1732
+
1733
+ defer { try ? file2. close ( ) }
1734
+
1742
1735
var bytesLeft = size
1743
1736
while bytesLeft > 0 {
1744
1737
let bytesToRead = Int ( min ( Int64 ( bufSize) , bytesLeft) )
1745
- guard read ( fd1, buffer1, bytesToRead) == bytesToRead else {
1746
- return false
1747
- }
1748
- guard read ( fd2, buffer2, bytesToRead) == bytesToRead else {
1749
- return false
1750
- }
1751
- guard memcmp ( buffer1, buffer2, bytesToRead) == 0 else {
1738
+ let file1Data = file1. readData ( ofLength: bytesToRead)
1739
+ let file2Data = file2. readData ( ofLength: bytesToRead)
1740
+
1741
+ guard file1Data. count == bytesToRead, file2Data. count == bytesToRead, file1Data == file2Data else {
1752
1742
return false
1753
1743
}
1744
+
1754
1745
bytesLeft -= Int64 ( bytesToRead)
1755
1746
}
1747
+
1756
1748
return true
1757
1749
#endif
1758
1750
}
You can’t perform that action at this time.
0 commit comments