| 477 | } |
| 478 | |
| 479 | void NBackup::open_database_write(bool exclusive) |
| 480 | { |
| 481 | #ifdef WIN_NT |
| 482 | const DWORD shareFlags = exclusive ? |
| 483 | FILE_SHARE_READ : |
| 484 | FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; |
| 485 | |
| 486 | dbase = CreateFile(dbname.c_str(), GENERIC_READ | GENERIC_WRITE, |
| 487 | shareFlags, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); |
| 488 | if (dbase != INVALID_HANDLE_VALUE) |
| 489 | return; |
| 490 | #else |
| 491 | const int flags = exclusive ? |
| 492 | O_EXCL | O_RDWR | O_LARGEFILE : |
| 493 | O_RDWR | O_LARGEFILE; |
| 494 | |
| 495 | dbase = os_utils::open(dbname.c_str(), flags); |
| 496 | if (dbase >= 0) |
| 497 | return; |
| 498 | #endif |
| 499 | |
| 500 | status_exception::raise(Arg::Gds(isc_nbackup_err_opendb) << dbname.c_str() << Arg::OsError()); |
| 501 | } |
| 502 | |
| 503 | void NBackup::open_database_scan() |
| 504 | { |