| 181 | }; |
| 182 | |
| 183 | CheckedFile::CheckedFile( const ustring &fileName, Mode mode, ReadChecksumPolicy policy ) : |
| 184 | fileName_( fileName ), checkSumPolicy_( policy ) |
| 185 | { |
| 186 | switch ( mode ) |
| 187 | { |
| 188 | case Read: |
| 189 | { |
| 190 | #if defined( _MSC_VER ) |
| 191 | constexpr int readFlags = O_RDONLY | O_BINARY; |
| 192 | #else |
| 193 | constexpr int readFlags = O_RDONLY; |
| 194 | #endif |
| 195 | |
| 196 | fd_ = open64( fileName_, readFlags, 0 ); |
| 197 | |
| 198 | readOnly_ = true; |
| 199 | |
| 200 | physicalLength_ = lseek64( 0LL, SEEK_END ); |
| 201 | lseek64( 0, SEEK_SET ); |
| 202 | |
| 203 | logicalLength_ = physicalToLogical( physicalLength_ ); |
| 204 | } |
| 205 | break; |
| 206 | |
| 207 | case Write: |
| 208 | { |
| 209 | // File truncated to zero length if already exists |
| 210 | |
| 211 | #if defined( _MSC_VER ) |
| 212 | constexpr int writeFlags = O_RDWR | O_CREAT | O_TRUNC | O_BINARY; |
| 213 | constexpr int writeMode = S_IREAD | S_IWRITE; |
| 214 | #else |
| 215 | constexpr int writeFlags = O_RDWR | O_CREAT | O_TRUNC; |
| 216 | constexpr int writeMode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH; |
| 217 | #endif |
| 218 | |
| 219 | fd_ = open64( fileName_, writeFlags, writeMode ); |
| 220 | } |
| 221 | break; |
| 222 | } |
| 223 | } |
| 224 | |
| 225 | CheckedFile::CheckedFile( const char *input, uint64_t size, ReadChecksumPolicy policy ) : |
| 226 | fileName_( "<StreamBuffer>" ), checkSumPolicy_( policy ) |
nothing calls this directly
no outgoing calls
no test coverage detected