| 231 | } |
| 232 | |
| 233 | bool fstream::try_lock(bool exclude /* = true */) |
| 234 | { |
| 235 | ACL_FILE_HANDLE fd = file_handle(); |
| 236 | if (fd == ACL_FILE_INVALID) { |
| 237 | logger_error("invalid file handle"); |
| 238 | #ifndef ACL_WINDOWS |
| 239 | errno = EBADF; |
| 240 | #endif |
| 241 | return false; |
| 242 | } |
| 243 | |
| 244 | #ifdef ACL_HAS_FLOCK_LOCK |
| 245 | return acl_myflock(fd, ACL_FLOCK_STYLE_FLOCK, |
| 246 | exclude ? (LOCK_EX | LOCK_NB) : (LOCK_SH | LOCK_NB)) == 0; |
| 247 | #else |
| 248 | return acl_myflock(fd, ACL_FLOCK_STYLE_FCNTL, |
| 249 | exclude ? (ACL_FLOCK_OP_NOWAIT | ACL_FLOCK_OP_EXCLUSIVE) |
| 250 | : (ACL_FLOCK_OP_NOWAIT | ACL_FLOCK_OP_SHARED)) == 0; |
| 251 | #endif |
| 252 | } |
| 253 | |
| 254 | bool fstream::unlock() |
| 255 | { |
no test coverage detected