blob: 001066d64a438769b80efc39d101fb6ee2300220 [file] [log] [blame]
shess5f2c3442017-01-24 02:15:101// Copyright (c) 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SQL_VFS_WRAPPER_H_
6#define SQL_VFS_WRAPPER_H_
7
Sergey Ulanov7de7e9f2019-03-09 00:41:028#include <string>
9
10#include "build/build_config.h"
shess5f2c3442017-01-24 02:15:1011#include "third_party/sqlite/sqlite3.h"
12
13namespace sql {
14
15// A wrapper around the default VFS.
16//
17// On OSX, the wrapper propagates Time Machine exclusions from the main database
18// file to associated files such as journals. <http://crbug.com/23619> and
19// <http://crbug.com/25959> and others.
20//
Sergey Ulanov7de7e9f2019-03-09 00:41:0221// On Fuchsia the wrapper adds in-process file locking (Fuchsia doesn't support
22// file locking).
23//
shess5f2c3442017-01-24 02:15:1024// TODO(shess): On Windows, wrap xFetch() with a structured exception handler.
25sqlite3_vfs* VFSWrapper();
26
Sergey Ulanov7de7e9f2019-03-09 00:41:0227// Internal representation of sqlite3_file for VFSWrapper.
28struct VfsFile {
29 const sqlite3_io_methods* methods;
30 sqlite3_file* wrapped_file;
31#if defined(OS_FUCHSIA)
32 std::string file_name;
33 int lock_level;
34#endif
35};
36
shess5f2c3442017-01-24 02:15:1037} // namespace sql
38
39#endif // SQL_VFS_WRAPPER_H_