typenative 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitattributes +1 -0
- package/.github/workflows/ci.yml +1 -1
- package/.github/workflows/npm-publish-github-packages.yml +1 -1
- package/CHANGELOG.md +247 -0
- package/CONTRIBUTION.md +1 -1
- package/README.md +4 -4
- package/bin/cli.js +3 -1
- package/bin/go/bridge.js +919 -0
- package/bin/go/convert.js +238 -0
- package/bin/go/metadata.js +211 -0
- package/bin/go/overrides.js +68 -0
- package/bin/go/stdlib.generated.js +175 -0
- package/bin/index.js +294 -240
- package/bin/main.js +4 -1
- package/bin/node/assert.js +344 -0
- package/bin/node/async_hooks.js +273 -0
- package/bin/node/buffer.js +765 -0
- package/bin/node/child_process.js +600 -0
- package/bin/node/cluster.js +1002 -0
- package/bin/node/console.js +121 -0
- package/bin/node/core.js +111 -0
- package/bin/node/crypto.js +414 -0
- package/bin/node/crypto_keys.js +2685 -0
- package/bin/node/dgram.js +388 -0
- package/bin/node/diagnostics_channel.js +534 -0
- package/bin/node/dns.js +635 -0
- package/bin/node/events.js +743 -0
- package/bin/node/fetch.js +737 -0
- package/bin/node/fs.js +998 -0
- package/bin/node/http.js +1500 -0
- package/bin/node/http2.js +688 -0
- package/bin/node/net.js +1143 -0
- package/bin/node/os.js +257 -0
- package/bin/node/path.js +758 -0
- package/bin/node/process.js +316 -0
- package/bin/node/punycode.js +195 -0
- package/bin/node/querystring.js +143 -0
- package/bin/node/readline.js +299 -0
- package/bin/node/registry.js +161 -0
- package/bin/node/sqlite.js +1142 -0
- package/bin/node/stream.js +1221 -0
- package/bin/node/stream_web.js +2259 -0
- package/bin/node/string_decoder.js +101 -0
- package/bin/node/system_extra.js +661 -0
- package/bin/node/test.js +1068 -0
- package/bin/node/timers.js +250 -0
- package/bin/node/tls.js +719 -0
- package/bin/node/url.js +861 -0
- package/bin/node/util.js +1311 -0
- package/bin/node/util_extra.js +599 -0
- package/bin/node/worker_threads.js +745 -0
- package/bin/node/zlib.js +263 -0
- package/bin/transpiler.js +2650 -575
- package/bin/version.js +2 -0
- package/conformance.md +707 -241
- package/govendor/github.com/ncruces/go-sqlite3/LICENSE +21 -0
- package/govendor/github.com/ncruces/go-sqlite3/README.md +121 -0
- package/govendor/github.com/ncruces/go-sqlite3/backup.go +132 -0
- package/govendor/github.com/ncruces/go-sqlite3/blob.go +266 -0
- package/govendor/github.com/ncruces/go-sqlite3/config.go +397 -0
- package/govendor/github.com/ncruces/go-sqlite3/conn.go +540 -0
- package/govendor/github.com/ncruces/go-sqlite3/conn_127.go +93 -0
- package/govendor/github.com/ncruces/go-sqlite3/const.go +436 -0
- package/govendor/github.com/ncruces/go-sqlite3/context.go +222 -0
- package/govendor/github.com/ncruces/go-sqlite3/error.go +182 -0
- package/govendor/github.com/ncruces/go-sqlite3/ext.go +153 -0
- package/govendor/github.com/ncruces/go-sqlite3/func.go +309 -0
- package/govendor/github.com/ncruces/go-sqlite3/go.mod +3 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk.go +29 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_other.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/dotlk/dotlk_unix.go +57 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/errutil/error.go +41 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/alloc.go +128 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/const.go +122 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/error.go +77 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem.go +116 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_other.go +34 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_unix.go +87 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mem_windows.go +149 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_unix.go +80 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/mmap_windows.go +129 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/sys_windows.go +60 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap.go +82 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_sys.go +113 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/sqlite3_wrap/wrap_vfs.go +181 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/testenv/env.go +55 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/json.go +54 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/json_v2.go +54 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/math.go +29 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/page.go +5 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/parse.go +142 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/pointer.go +3 -0
- package/govendor/github.com/ncruces/go-sqlite3/internal/util/reflect.go +10 -0
- package/govendor/github.com/ncruces/go-sqlite3/json.go +100 -0
- package/govendor/github.com/ncruces/go-sqlite3/json_v2.go +116 -0
- package/govendor/github.com/ncruces/go-sqlite3/pointer.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/quote.go +140 -0
- package/govendor/github.com/ncruces/go-sqlite3/stmt.go +692 -0
- package/govendor/github.com/ncruces/go-sqlite3/time.go +360 -0
- package/govendor/github.com/ncruces/go-sqlite3/txn.go +374 -0
- package/govendor/github.com/ncruces/go-sqlite3/value.go +212 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/README.md +133 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/api.go +239 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/cksm.go +143 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/const.go +256 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/file.go +260 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/filename.go +187 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/lock.go +128 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/lock_other.go +23 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/map.go +63 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/map_other.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_bsd.go +110 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_darwin.go +131 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_dotlk.go +140 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_f2fs_linux.go +56 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_linux.go +117 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_ofd.go +59 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std.go +50 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_alloc.go +19 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_atomic.go +9 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go +13 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_sync.go +9 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_std_temp.go +16 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go +108 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go +180 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/registry.go +48 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm.go +26 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go +258 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_copy.go +90 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_dotlk.go +168 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_memlk.go +52 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_ofd.go +185 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_other.go +21 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/shm_windows.go +124 -0
- package/govendor/github.com/ncruces/go-sqlite3/vfs/vfs.go +455 -0
- package/govendor/github.com/ncruces/go-sqlite3/vtab.go +677 -0
- package/govendor/github.com/ncruces/go-sqlite3/wrap.go +48 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/LICENSE +18 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/README.md +11 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/go.mod +3 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/libc.go +215 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.dat +0 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/sqlite3.go +157903 -0
- package/govendor/github.com/ncruces/go-sqlite3-wasm/v6/tools.sh +38 -0
- package/govendor/github.com/ncruces/julianday/LICENSE +21 -0
- package/govendor/github.com/ncruces/julianday/README.md +9 -0
- package/govendor/github.com/ncruces/julianday/go.mod +3 -0
- package/govendor/github.com/ncruces/julianday/julianday.go +124 -0
- package/govendor/golang.org/x/sys/LICENSE +27 -0
- package/govendor/golang.org/x/sys/PATENTS +22 -0
- package/govendor/golang.org/x/sys/go.mod +3 -0
- package/govendor/golang.org/x/sys/unix/README.md +184 -0
- package/govendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
- package/govendor/golang.org/x/sys/unix/aliases.go +13 -0
- package/govendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
- package/govendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
- package/govendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
- package/govendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
- package/govendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
- package/govendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
- package/govendor/golang.org/x/sys/unix/auxv.go +36 -0
- package/govendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
- package/govendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
- package/govendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
- package/govendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
- package/govendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
- package/govendor/golang.org/x/sys/unix/constants.go +13 -0
- package/govendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
- package/govendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
- package/govendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
- package/govendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
- package/govendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
- package/govendor/golang.org/x/sys/unix/dev_linux.go +42 -0
- package/govendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
- package/govendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
- package/govendor/golang.org/x/sys/unix/dev_zos.go +28 -0
- package/govendor/golang.org/x/sys/unix/dirent.go +102 -0
- package/govendor/golang.org/x/sys/unix/endian_big.go +9 -0
- package/govendor/golang.org/x/sys/unix/endian_little.go +9 -0
- package/govendor/golang.org/x/sys/unix/env_unix.go +31 -0
- package/govendor/golang.org/x/sys/unix/fcntl.go +36 -0
- package/govendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
- package/govendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
- package/govendor/golang.org/x/sys/unix/fdset.go +27 -0
- package/govendor/golang.org/x/sys/unix/gccgo.go +59 -0
- package/govendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
- package/govendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
- package/govendor/golang.org/x/sys/unix/ifreq_linux.go +145 -0
- package/govendor/golang.org/x/sys/unix/ioctl_linux.go +341 -0
- package/govendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
- package/govendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
- package/govendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
- package/govendor/golang.org/x/sys/unix/mkall.sh +250 -0
- package/govendor/golang.org/x/sys/unix/mkerrors.sh +807 -0
- package/govendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
- package/govendor/golang.org/x/sys/unix/mremap.go +57 -0
- package/govendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
- package/govendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
- package/govendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
- package/govendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
- package/govendor/golang.org/x/sys/unix/race.go +30 -0
- package/govendor/golang.org/x/sys/unix/race0.go +25 -0
- package/govendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
- package/govendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
- package/govendor/golang.org/x/sys/unix/readv_unix.go +103 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
- package/govendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
- package/govendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
- package/govendor/golang.org/x/sys/unix/syscall.go +86 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
- package/govendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
- package/govendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
- package/govendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
- package/govendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
- package/govendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
- package/govendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
- package/govendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
- package/govendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
- package/govendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
- package/govendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
- package/govendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
- package/govendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
- package/govendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
- package/govendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
- package/govendor/golang.org/x/sys/unix/timestruct.go +76 -0
- package/govendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
- package/govendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
- package/govendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
- package/govendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
- package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
- package/govendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
- package/govendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
- package/govendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
- package/govendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
- package/govendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux.go +4209 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_386.go +882 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +882 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_arm.go +887 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +884 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +874 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +888 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +940 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +944 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +944 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +884 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +943 -0
- package/govendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +992 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
- package/govendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
- package/govendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
- package/govendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
- package/govendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
- package/govendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
- package/govendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
- package/govendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
- package/govendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
- package/govendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
- package/govendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
- package/govendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
- package/govendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
- package/govendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
- package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
- package/govendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
- package/govendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
- package/govendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
- package/govendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
- package/govendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux.go +6547 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_386.go +747 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +761 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_arm.go +741 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +740 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +741 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips.go +746 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +743 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +743 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +746 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +754 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +749 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +749 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +828 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +763 -0
- package/govendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +744 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
- package/govendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
- package/govendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
- package/govendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
- package/govendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
- package/govendor/golang.org/x/sys/windows/aliases.go +13 -0
- package/govendor/golang.org/x/sys/windows/dll_windows.go +380 -0
- package/govendor/golang.org/x/sys/windows/env_windows.go +57 -0
- package/govendor/golang.org/x/sys/windows/eventlog.go +20 -0
- package/govendor/golang.org/x/sys/windows/exec_windows.go +248 -0
- package/govendor/golang.org/x/sys/windows/memory_windows.go +48 -0
- package/govendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
- package/govendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
- package/govendor/golang.org/x/sys/windows/mksyscall.go +9 -0
- package/govendor/golang.org/x/sys/windows/race.go +30 -0
- package/govendor/golang.org/x/sys/windows/race0.go +25 -0
- package/govendor/golang.org/x/sys/windows/security_windows.go +1537 -0
- package/govendor/golang.org/x/sys/windows/service.go +257 -0
- package/govendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
- package/govendor/golang.org/x/sys/windows/str.go +22 -0
- package/govendor/golang.org/x/sys/windows/syscall.go +104 -0
- package/govendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
- package/govendor/golang.org/x/sys/windows/types_windows.go +4058 -0
- package/govendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
- package/govendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
- package/govendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
- package/govendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
- package/govendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
- package/govendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
- package/govendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
- package/govendor/manifest.txt +7 -0
- package/package.json +6 -1
- package/types/typenative-go.d.ts +15159 -5
- package/types/typenative-npm.d.ts +2637 -34
- package/types/typenative.d.ts +651 -8
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
package vfs
|
|
2
|
+
|
|
3
|
+
import "github.com/ncruces/go-sqlite3/internal/sqlite3_wrap"
|
|
4
|
+
|
|
5
|
+
const (
|
|
6
|
+
_MAX_NAME = 1e6 // Self-imposed limit for most NUL terminated strings.
|
|
7
|
+
_MAX_SQL_LENGTH = 1e9
|
|
8
|
+
_MAX_PATHNAME = 1024
|
|
9
|
+
_DEFAULT_SECTOR_SIZE = 4096
|
|
10
|
+
|
|
11
|
+
ptrlen = sqlite3_wrap.PtrLen
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
type ptr_t = sqlite3_wrap.Ptr_t
|
|
15
|
+
|
|
16
|
+
// https://sqlite.org/rescode.html
|
|
17
|
+
type _ErrorCode uint32
|
|
18
|
+
|
|
19
|
+
func (e _ErrorCode) Error() string {
|
|
20
|
+
return sqlite3_wrap.ErrorCodeString(e)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const (
|
|
24
|
+
_OK = sqlite3_wrap.OK
|
|
25
|
+
_ERROR _ErrorCode = sqlite3_wrap.ERROR
|
|
26
|
+
_PERM _ErrorCode = sqlite3_wrap.PERM
|
|
27
|
+
_BUSY _ErrorCode = sqlite3_wrap.BUSY
|
|
28
|
+
_READONLY _ErrorCode = sqlite3_wrap.READONLY
|
|
29
|
+
_IOERR _ErrorCode = sqlite3_wrap.IOERR
|
|
30
|
+
_NOTFOUND _ErrorCode = sqlite3_wrap.NOTFOUND
|
|
31
|
+
_FULL _ErrorCode = sqlite3_wrap.FULL
|
|
32
|
+
_CANTOPEN _ErrorCode = sqlite3_wrap.CANTOPEN
|
|
33
|
+
_IOERR_READ _ErrorCode = sqlite3_wrap.IOERR_READ
|
|
34
|
+
_IOERR_SHORT_READ _ErrorCode = sqlite3_wrap.IOERR_SHORT_READ
|
|
35
|
+
_IOERR_WRITE _ErrorCode = sqlite3_wrap.IOERR_WRITE
|
|
36
|
+
_IOERR_FSYNC _ErrorCode = sqlite3_wrap.IOERR_FSYNC
|
|
37
|
+
_IOERR_DIR_FSYNC _ErrorCode = sqlite3_wrap.IOERR_DIR_FSYNC
|
|
38
|
+
_IOERR_TRUNCATE _ErrorCode = sqlite3_wrap.IOERR_TRUNCATE
|
|
39
|
+
_IOERR_FSTAT _ErrorCode = sqlite3_wrap.IOERR_FSTAT
|
|
40
|
+
_IOERR_UNLOCK _ErrorCode = sqlite3_wrap.IOERR_UNLOCK
|
|
41
|
+
_IOERR_RDLOCK _ErrorCode = sqlite3_wrap.IOERR_RDLOCK
|
|
42
|
+
_IOERR_DELETE _ErrorCode = sqlite3_wrap.IOERR_DELETE
|
|
43
|
+
_IOERR_NOMEM _ErrorCode = sqlite3_wrap.IOERR_NOMEM
|
|
44
|
+
_IOERR_ACCESS _ErrorCode = sqlite3_wrap.IOERR_ACCESS
|
|
45
|
+
_IOERR_CHECKRESERVEDLOCK _ErrorCode = sqlite3_wrap.IOERR_CHECKRESERVEDLOCK
|
|
46
|
+
_IOERR_LOCK _ErrorCode = sqlite3_wrap.IOERR_LOCK
|
|
47
|
+
_IOERR_CLOSE _ErrorCode = sqlite3_wrap.IOERR_CLOSE
|
|
48
|
+
_IOERR_SHMOPEN _ErrorCode = sqlite3_wrap.IOERR_SHMOPEN
|
|
49
|
+
_IOERR_SHMSIZE _ErrorCode = sqlite3_wrap.IOERR_SHMSIZE
|
|
50
|
+
_IOERR_SHMLOCK _ErrorCode = sqlite3_wrap.IOERR_SHMLOCK
|
|
51
|
+
_IOERR_SHMMAP _ErrorCode = sqlite3_wrap.IOERR_SHMMAP
|
|
52
|
+
_IOERR_SEEK _ErrorCode = sqlite3_wrap.IOERR_SEEK
|
|
53
|
+
_IOERR_DELETE_NOENT _ErrorCode = sqlite3_wrap.IOERR_DELETE_NOENT
|
|
54
|
+
_IOERR_MMAP _ErrorCode = sqlite3_wrap.IOERR_MMAP
|
|
55
|
+
_IOERR_GETTEMPPATH _ErrorCode = sqlite3_wrap.IOERR_GETTEMPPATH
|
|
56
|
+
_IOERR_BEGIN_ATOMIC _ErrorCode = sqlite3_wrap.IOERR_BEGIN_ATOMIC
|
|
57
|
+
_IOERR_COMMIT_ATOMIC _ErrorCode = sqlite3_wrap.IOERR_COMMIT_ATOMIC
|
|
58
|
+
_IOERR_ROLLBACK_ATOMIC _ErrorCode = sqlite3_wrap.IOERR_ROLLBACK_ATOMIC
|
|
59
|
+
_IOERR_DATA _ErrorCode = sqlite3_wrap.IOERR_DATA
|
|
60
|
+
_IOERR_CORRUPTFS _ErrorCode = sqlite3_wrap.IOERR_CORRUPTFS
|
|
61
|
+
_BUSY_SNAPSHOT _ErrorCode = sqlite3_wrap.BUSY_SNAPSHOT
|
|
62
|
+
_CANTOPEN_FULLPATH _ErrorCode = sqlite3_wrap.CANTOPEN_FULLPATH
|
|
63
|
+
_CANTOPEN_ISDIR _ErrorCode = sqlite3_wrap.CANTOPEN_ISDIR
|
|
64
|
+
_READONLY_CANTINIT _ErrorCode = sqlite3_wrap.READONLY_CANTINIT
|
|
65
|
+
_READONLY_DIRECTORY _ErrorCode = sqlite3_wrap.READONLY_DIRECTORY
|
|
66
|
+
_OK_SYMLINK _ErrorCode = sqlite3_wrap.OK_SYMLINK
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
// OpenFlag is a flag for the [VFS] Open method.
|
|
70
|
+
//
|
|
71
|
+
// https://sqlite.org/c3ref/c_open_autoproxy.html
|
|
72
|
+
type OpenFlag uint32
|
|
73
|
+
|
|
74
|
+
const (
|
|
75
|
+
OPEN_READONLY OpenFlag = 0x00000001 /* Ok for sqlite3_open_v2() */
|
|
76
|
+
OPEN_READWRITE OpenFlag = 0x00000002 /* Ok for sqlite3_open_v2() */
|
|
77
|
+
OPEN_CREATE OpenFlag = 0x00000004 /* Ok for sqlite3_open_v2() */
|
|
78
|
+
OPEN_DELETEONCLOSE OpenFlag = 0x00000008 /* VFS only */
|
|
79
|
+
OPEN_EXCLUSIVE OpenFlag = 0x00000010 /* VFS only */
|
|
80
|
+
OPEN_AUTOPROXY OpenFlag = 0x00000020 /* VFS only */
|
|
81
|
+
OPEN_URI OpenFlag = 0x00000040 /* Ok for sqlite3_open_v2() */
|
|
82
|
+
OPEN_MEMORY OpenFlag = 0x00000080 /* Ok for sqlite3_open_v2() */
|
|
83
|
+
OPEN_MAIN_DB OpenFlag = 0x00000100 /* VFS only */
|
|
84
|
+
OPEN_TEMP_DB OpenFlag = 0x00000200 /* VFS only */
|
|
85
|
+
OPEN_TRANSIENT_DB OpenFlag = 0x00000400 /* VFS only */
|
|
86
|
+
OPEN_MAIN_JOURNAL OpenFlag = 0x00000800 /* VFS only */
|
|
87
|
+
OPEN_TEMP_JOURNAL OpenFlag = 0x00001000 /* VFS only */
|
|
88
|
+
OPEN_SUBJOURNAL OpenFlag = 0x00002000 /* VFS only */
|
|
89
|
+
OPEN_SUPER_JOURNAL OpenFlag = 0x00004000 /* VFS only */
|
|
90
|
+
OPEN_NOMUTEX OpenFlag = 0x00008000 /* Ok for sqlite3_open_v2() */
|
|
91
|
+
OPEN_FULLMUTEX OpenFlag = 0x00010000 /* Ok for sqlite3_open_v2() */
|
|
92
|
+
OPEN_SHAREDCACHE OpenFlag = 0x00020000 /* Ok for sqlite3_open_v2() */
|
|
93
|
+
OPEN_PRIVATECACHE OpenFlag = 0x00040000 /* Ok for sqlite3_open_v2() */
|
|
94
|
+
OPEN_WAL OpenFlag = 0x00080000 /* VFS only */
|
|
95
|
+
OPEN_NOFOLLOW OpenFlag = 0x01000000 /* Ok for sqlite3_open_v2() */
|
|
96
|
+
_FLAG_ATOMIC OpenFlag = 0x10000000
|
|
97
|
+
_FLAG_KEEP_WAL OpenFlag = 0x20000000
|
|
98
|
+
_FLAG_PSOW OpenFlag = 0x40000000
|
|
99
|
+
_FLAG_SYNC_DIR OpenFlag = 0x80000000
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
// AccessFlag is a flag for the [VFS] Access method.
|
|
103
|
+
//
|
|
104
|
+
// https://sqlite.org/c3ref/c_access_exists.html
|
|
105
|
+
type AccessFlag uint32
|
|
106
|
+
|
|
107
|
+
const (
|
|
108
|
+
ACCESS_EXISTS AccessFlag = 0
|
|
109
|
+
ACCESS_READWRITE AccessFlag = 1 /* Used by PRAGMA temp_store_directory */
|
|
110
|
+
ACCESS_READ AccessFlag = 2 /* Unused */
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
// SyncFlag is a flag for the [File] Sync method.
|
|
114
|
+
//
|
|
115
|
+
// https://sqlite.org/c3ref/c_sync_dataonly.html
|
|
116
|
+
type SyncFlag uint32
|
|
117
|
+
|
|
118
|
+
const (
|
|
119
|
+
SYNC_NORMAL SyncFlag = 0x00002
|
|
120
|
+
SYNC_FULL SyncFlag = 0x00003
|
|
121
|
+
SYNC_DATAONLY SyncFlag = 0x00010
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
// LockLevel is a value used with [File] Lock and Unlock methods.
|
|
125
|
+
//
|
|
126
|
+
// https://sqlite.org/c3ref/c_lock_exclusive.html
|
|
127
|
+
type LockLevel uint32
|
|
128
|
+
|
|
129
|
+
const (
|
|
130
|
+
// No locks are held on the database.
|
|
131
|
+
// The database may be neither read nor written.
|
|
132
|
+
// Any internally cached data is considered suspect and subject to
|
|
133
|
+
// verification against the database file before being used.
|
|
134
|
+
// Other processes can read or write the database as their own locking
|
|
135
|
+
// states permit.
|
|
136
|
+
// This is the default state.
|
|
137
|
+
LOCK_NONE LockLevel = 0 /* xUnlock() only */
|
|
138
|
+
|
|
139
|
+
// The database may be read but not written.
|
|
140
|
+
// Any number of processes can hold SHARED locks at the same time,
|
|
141
|
+
// hence there can be many simultaneous readers.
|
|
142
|
+
// But no other thread or process is allowed to write to the database file
|
|
143
|
+
// while one or more SHARED locks are active.
|
|
144
|
+
LOCK_SHARED LockLevel = 1 /* xLock() or xUnlock() */
|
|
145
|
+
|
|
146
|
+
// A RESERVED lock means that the process is planning on writing to the
|
|
147
|
+
// database file at some point in the future but that it is currently just
|
|
148
|
+
// reading from the file.
|
|
149
|
+
// Only a single RESERVED lock may be active at one time,
|
|
150
|
+
// though multiple SHARED locks can coexist with a single RESERVED lock.
|
|
151
|
+
// RESERVED differs from PENDING in that new SHARED locks can be acquired
|
|
152
|
+
// while there is a RESERVED lock.
|
|
153
|
+
LOCK_RESERVED LockLevel = 2 /* xLock() only */
|
|
154
|
+
|
|
155
|
+
// A PENDING lock means that the process holding the lock wants to write to
|
|
156
|
+
// the database as soon as possible and is just waiting on all current
|
|
157
|
+
// SHARED locks to clear so that it can get an EXCLUSIVE lock.
|
|
158
|
+
// No new SHARED locks are permitted against the database if a PENDING lock
|
|
159
|
+
// is active, though existing SHARED locks are allowed to continue.
|
|
160
|
+
LOCK_PENDING LockLevel = 3 /* internal use only */
|
|
161
|
+
|
|
162
|
+
// An EXCLUSIVE lock is needed in order to write to the database file.
|
|
163
|
+
// Only one EXCLUSIVE lock is allowed on the file and no other locks of any
|
|
164
|
+
// kind are allowed to coexist with an EXCLUSIVE lock.
|
|
165
|
+
// In order to maximize concurrency, SQLite works to minimize the amount of
|
|
166
|
+
// time that EXCLUSIVE locks are held.
|
|
167
|
+
LOCK_EXCLUSIVE LockLevel = 4 /* xLock() only */
|
|
168
|
+
)
|
|
169
|
+
|
|
170
|
+
// DeviceCharacteristic is a flag retuned by the [File] DeviceCharacteristics method.
|
|
171
|
+
//
|
|
172
|
+
// https://sqlite.org/c3ref/c_iocap_atomic.html
|
|
173
|
+
type DeviceCharacteristic uint32
|
|
174
|
+
|
|
175
|
+
const (
|
|
176
|
+
IOCAP_ATOMIC DeviceCharacteristic = 0x00000001
|
|
177
|
+
IOCAP_ATOMIC512 DeviceCharacteristic = 0x00000002
|
|
178
|
+
IOCAP_ATOMIC1K DeviceCharacteristic = 0x00000004
|
|
179
|
+
IOCAP_ATOMIC2K DeviceCharacteristic = 0x00000008
|
|
180
|
+
IOCAP_ATOMIC4K DeviceCharacteristic = 0x00000010
|
|
181
|
+
IOCAP_ATOMIC8K DeviceCharacteristic = 0x00000020
|
|
182
|
+
IOCAP_ATOMIC16K DeviceCharacteristic = 0x00000040
|
|
183
|
+
IOCAP_ATOMIC32K DeviceCharacteristic = 0x00000080
|
|
184
|
+
IOCAP_ATOMIC64K DeviceCharacteristic = 0x00000100
|
|
185
|
+
IOCAP_SAFE_APPEND DeviceCharacteristic = 0x00000200
|
|
186
|
+
IOCAP_SEQUENTIAL DeviceCharacteristic = 0x00000400
|
|
187
|
+
IOCAP_UNDELETABLE_WHEN_OPEN DeviceCharacteristic = 0x00000800
|
|
188
|
+
IOCAP_POWERSAFE_OVERWRITE DeviceCharacteristic = 0x00001000
|
|
189
|
+
IOCAP_IMMUTABLE DeviceCharacteristic = 0x00002000
|
|
190
|
+
IOCAP_BATCH_ATOMIC DeviceCharacteristic = 0x00004000
|
|
191
|
+
IOCAP_SUBPAGE_READ DeviceCharacteristic = 0x00008000
|
|
192
|
+
)
|
|
193
|
+
|
|
194
|
+
// https://sqlite.org/c3ref/c_fcntl_begin_atomic_write.html
|
|
195
|
+
type _FcntlOpcode uint32
|
|
196
|
+
|
|
197
|
+
const (
|
|
198
|
+
_FCNTL_LOCKSTATE _FcntlOpcode = 1
|
|
199
|
+
_FCNTL_GET_LOCKPROXYFILE _FcntlOpcode = 2
|
|
200
|
+
_FCNTL_SET_LOCKPROXYFILE _FcntlOpcode = 3
|
|
201
|
+
_FCNTL_LAST_ERRNO _FcntlOpcode = 4
|
|
202
|
+
_FCNTL_SIZE_HINT _FcntlOpcode = 5
|
|
203
|
+
_FCNTL_CHUNK_SIZE _FcntlOpcode = 6
|
|
204
|
+
_FCNTL_FILE_POINTER _FcntlOpcode = 7
|
|
205
|
+
_FCNTL_SYNC_OMITTED _FcntlOpcode = 8
|
|
206
|
+
_FCNTL_WIN32_AV_RETRY _FcntlOpcode = 9
|
|
207
|
+
_FCNTL_PERSIST_WAL _FcntlOpcode = 10
|
|
208
|
+
_FCNTL_OVERWRITE _FcntlOpcode = 11
|
|
209
|
+
_FCNTL_VFSNAME _FcntlOpcode = 12
|
|
210
|
+
_FCNTL_POWERSAFE_OVERWRITE _FcntlOpcode = 13
|
|
211
|
+
_FCNTL_PRAGMA _FcntlOpcode = 14
|
|
212
|
+
_FCNTL_BUSYHANDLER _FcntlOpcode = 15
|
|
213
|
+
_FCNTL_TEMPFILENAME _FcntlOpcode = 16
|
|
214
|
+
_FCNTL_MMAP_SIZE _FcntlOpcode = 18
|
|
215
|
+
_FCNTL_TRACE _FcntlOpcode = 19
|
|
216
|
+
_FCNTL_HAS_MOVED _FcntlOpcode = 20
|
|
217
|
+
_FCNTL_SYNC _FcntlOpcode = 21
|
|
218
|
+
_FCNTL_COMMIT_PHASETWO _FcntlOpcode = 22
|
|
219
|
+
_FCNTL_WIN32_SET_HANDLE _FcntlOpcode = 23
|
|
220
|
+
_FCNTL_WAL_BLOCK _FcntlOpcode = 24
|
|
221
|
+
_FCNTL_ZIPVFS _FcntlOpcode = 25
|
|
222
|
+
_FCNTL_RBU _FcntlOpcode = 26
|
|
223
|
+
_FCNTL_VFS_POINTER _FcntlOpcode = 27
|
|
224
|
+
_FCNTL_JOURNAL_POINTER _FcntlOpcode = 28
|
|
225
|
+
_FCNTL_WIN32_GET_HANDLE _FcntlOpcode = 29
|
|
226
|
+
_FCNTL_PDB _FcntlOpcode = 30
|
|
227
|
+
_FCNTL_BEGIN_ATOMIC_WRITE _FcntlOpcode = 31
|
|
228
|
+
_FCNTL_COMMIT_ATOMIC_WRITE _FcntlOpcode = 32
|
|
229
|
+
_FCNTL_ROLLBACK_ATOMIC_WRITE _FcntlOpcode = 33
|
|
230
|
+
_FCNTL_LOCK_TIMEOUT _FcntlOpcode = 34
|
|
231
|
+
_FCNTL_DATA_VERSION _FcntlOpcode = 35
|
|
232
|
+
_FCNTL_SIZE_LIMIT _FcntlOpcode = 36
|
|
233
|
+
_FCNTL_CKPT_DONE _FcntlOpcode = 37
|
|
234
|
+
_FCNTL_RESERVE_BYTES _FcntlOpcode = 38
|
|
235
|
+
_FCNTL_CKPT_START _FcntlOpcode = 39
|
|
236
|
+
_FCNTL_EXTERNAL_READER _FcntlOpcode = 40
|
|
237
|
+
_FCNTL_CKSM_FILE _FcntlOpcode = 41
|
|
238
|
+
_FCNTL_RESET_CACHE _FcntlOpcode = 42
|
|
239
|
+
_FCNTL_NULL_IO _FcntlOpcode = 43
|
|
240
|
+
_FCNTL_BLOCK_ON_CONNECT _FcntlOpcode = 44
|
|
241
|
+
_FCNTL_FILESTAT _FcntlOpcode = 45
|
|
242
|
+
)
|
|
243
|
+
|
|
244
|
+
// https://sqlite.org/c3ref/c_shm_exclusive.html
|
|
245
|
+
type _ShmFlag uint32
|
|
246
|
+
|
|
247
|
+
const (
|
|
248
|
+
_SHM_UNLOCK _ShmFlag = 1
|
|
249
|
+
_SHM_LOCK _ShmFlag = 2
|
|
250
|
+
_SHM_SHARED _ShmFlag = 4
|
|
251
|
+
_SHM_EXCLUSIVE _ShmFlag = 8
|
|
252
|
+
|
|
253
|
+
_SHM_NLOCK = 8
|
|
254
|
+
_SHM_BASE = (22 + _SHM_NLOCK) * 4
|
|
255
|
+
_SHM_DMS = _SHM_BASE + _SHM_NLOCK
|
|
256
|
+
)
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
package vfs
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"errors"
|
|
5
|
+
"io"
|
|
6
|
+
"io/fs"
|
|
7
|
+
"os"
|
|
8
|
+
"path/filepath"
|
|
9
|
+
"runtime"
|
|
10
|
+
"syscall"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
type vfsOS struct{}
|
|
14
|
+
|
|
15
|
+
func (vfsOS) FullPathname(path string) (string, error) {
|
|
16
|
+
link, err := evalSymlinks(path)
|
|
17
|
+
if err != nil {
|
|
18
|
+
return "", err
|
|
19
|
+
}
|
|
20
|
+
full, err := filepath.Abs(link)
|
|
21
|
+
if err == nil && link != path {
|
|
22
|
+
err = _OK_SYMLINK
|
|
23
|
+
}
|
|
24
|
+
return full, err
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
func evalSymlinks(path string) (string, error) {
|
|
28
|
+
var file string
|
|
29
|
+
_, err := os.Lstat(path)
|
|
30
|
+
if errors.Is(err, fs.ErrNotExist) {
|
|
31
|
+
path, file = filepath.Split(path)
|
|
32
|
+
}
|
|
33
|
+
path, err = filepath.EvalSymlinks(path)
|
|
34
|
+
if err != nil {
|
|
35
|
+
return "", err
|
|
36
|
+
}
|
|
37
|
+
return filepath.Join(path, file), nil
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
func (vfsOS) Delete(path string, syncDir bool) error {
|
|
41
|
+
err := os.Remove(path)
|
|
42
|
+
if errors.Is(err, fs.ErrNotExist) {
|
|
43
|
+
return sysError{err, _IOERR_DELETE_NOENT}
|
|
44
|
+
}
|
|
45
|
+
if err != nil {
|
|
46
|
+
return err
|
|
47
|
+
}
|
|
48
|
+
if isUnix && syncDir {
|
|
49
|
+
f, err := os.Open(filepath.Dir(path))
|
|
50
|
+
if err != nil {
|
|
51
|
+
return nil
|
|
52
|
+
}
|
|
53
|
+
defer f.Close()
|
|
54
|
+
err = osSync(f, 0, SYNC_FULL)
|
|
55
|
+
if err != nil {
|
|
56
|
+
return sysError{err, _IOERR_DIR_FSYNC}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return nil
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
func (vfsOS) Access(name string, flags AccessFlag) (bool, error) {
|
|
63
|
+
err := osAccess(name, flags)
|
|
64
|
+
if flags == ACCESS_EXISTS {
|
|
65
|
+
if errors.Is(err, fs.ErrNotExist) {
|
|
66
|
+
return false, nil
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
if errors.Is(err, fs.ErrPermission) {
|
|
70
|
+
return false, nil
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return err == nil, err
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
func (vfsOS) Open(name string, flags OpenFlag) (File, OpenFlag, error) {
|
|
77
|
+
// notest // OpenFilename is called instead
|
|
78
|
+
if name == "" {
|
|
79
|
+
return vfsOS{}.OpenFilename(nil, flags)
|
|
80
|
+
}
|
|
81
|
+
return nil, 0, _CANTOPEN
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error) {
|
|
85
|
+
oflags := _O_NOFOLLOW
|
|
86
|
+
if flags&OPEN_EXCLUSIVE != 0 {
|
|
87
|
+
oflags |= os.O_EXCL
|
|
88
|
+
}
|
|
89
|
+
if flags&OPEN_CREATE != 0 {
|
|
90
|
+
oflags |= os.O_CREATE
|
|
91
|
+
}
|
|
92
|
+
if flags&OPEN_READONLY != 0 {
|
|
93
|
+
oflags |= os.O_RDONLY
|
|
94
|
+
}
|
|
95
|
+
if flags&OPEN_READWRITE != 0 {
|
|
96
|
+
oflags |= os.O_RDWR
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
isCreate := flags&(OPEN_CREATE) != 0
|
|
100
|
+
isJournl := flags&(OPEN_MAIN_JOURNAL|OPEN_SUPER_JOURNAL|OPEN_WAL) != 0
|
|
101
|
+
|
|
102
|
+
var err error
|
|
103
|
+
var f *os.File
|
|
104
|
+
if name == nil {
|
|
105
|
+
f, err = osCreateTemp(flags)
|
|
106
|
+
} else {
|
|
107
|
+
f, err = os.OpenFile(name.String(), oflags, 0666)
|
|
108
|
+
if errors.Is(err, syscall.EISDIR) {
|
|
109
|
+
return nil, flags, sysError{err, _CANTOPEN_ISDIR}
|
|
110
|
+
}
|
|
111
|
+
if isCreate && isJournl && errors.Is(err, fs.ErrPermission) &&
|
|
112
|
+
osAccess(name.String(), ACCESS_EXISTS) != nil {
|
|
113
|
+
return nil, flags, sysError{err, _READONLY_DIRECTORY}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if err != nil {
|
|
117
|
+
return nil, flags, err
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if modeof := name.URIParameter("modeof"); modeof != "" {
|
|
121
|
+
if err = osSetMode(f, modeof); err != nil {
|
|
122
|
+
f.Close()
|
|
123
|
+
return nil, flags, sysError{err, _IOERR_FSTAT}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
file := vfsFile{
|
|
128
|
+
File: f,
|
|
129
|
+
flags: flags | _FLAG_PSOW,
|
|
130
|
+
mmap: NewMemoryMapper(f, flags),
|
|
131
|
+
}
|
|
132
|
+
if osBatchAtomic(f) {
|
|
133
|
+
file.flags |= _FLAG_ATOMIC
|
|
134
|
+
}
|
|
135
|
+
if isUnix && isCreate && isJournl {
|
|
136
|
+
file.flags |= _FLAG_SYNC_DIR
|
|
137
|
+
}
|
|
138
|
+
if name.String() != "" {
|
|
139
|
+
file.shm = NewSharedMemory(name.String()+"-shm", flags)
|
|
140
|
+
}
|
|
141
|
+
return &file, flags, nil
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
type vfsFile struct {
|
|
145
|
+
*os.File
|
|
146
|
+
shm SharedMemory
|
|
147
|
+
mmap MemoryMapper
|
|
148
|
+
lock LockLevel
|
|
149
|
+
flags OpenFlag
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
var (
|
|
153
|
+
// Ensure these interfaces are implemented:
|
|
154
|
+
_ FileLockState = &vfsFile{}
|
|
155
|
+
_ FileHasMoved = &vfsFile{}
|
|
156
|
+
_ FileSizeHint = &vfsFile{}
|
|
157
|
+
_ FilePersistWAL = &vfsFile{}
|
|
158
|
+
_ FilePowersafeOverwrite = &vfsFile{}
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
func (f *vfsFile) Close() error {
|
|
162
|
+
if !isUnix && f.flags&OPEN_DELETEONCLOSE != 0 {
|
|
163
|
+
defer os.Remove(f.Name())
|
|
164
|
+
}
|
|
165
|
+
if f.shm != nil {
|
|
166
|
+
f.shm.Close()
|
|
167
|
+
}
|
|
168
|
+
f.Unlock(LOCK_NONE)
|
|
169
|
+
return f.File.Close()
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
func (f *vfsFile) ReadAt(p []byte, off int64) (n int, err error) {
|
|
173
|
+
return osReadAt(f.File, p, off)
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
func (f *vfsFile) WriteAt(p []byte, off int64) (n int, err error) {
|
|
177
|
+
return osWriteAt(f.File, p, off)
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
func (f *vfsFile) Sync(flags SyncFlag) error {
|
|
181
|
+
err := osSync(f.File, f.flags, flags)
|
|
182
|
+
if err != nil {
|
|
183
|
+
return err
|
|
184
|
+
}
|
|
185
|
+
if isUnix && f.flags&_FLAG_SYNC_DIR != 0 {
|
|
186
|
+
f.flags ^= _FLAG_SYNC_DIR
|
|
187
|
+
d, err := os.Open(filepath.Dir(f.File.Name()))
|
|
188
|
+
if err != nil {
|
|
189
|
+
return nil
|
|
190
|
+
}
|
|
191
|
+
defer d.Close()
|
|
192
|
+
err = osSync(f.File, f.flags, flags)
|
|
193
|
+
if err != nil {
|
|
194
|
+
return sysError{err, _IOERR_DIR_FSYNC}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return nil
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
func (f *vfsFile) Size() (int64, error) {
|
|
201
|
+
return f.Seek(0, io.SeekEnd)
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
func (f *vfsFile) SectorSize() int {
|
|
205
|
+
return _DEFAULT_SECTOR_SIZE
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
func (f *vfsFile) DeviceCharacteristics() DeviceCharacteristic {
|
|
209
|
+
ret := IOCAP_SUBPAGE_READ
|
|
210
|
+
if f.flags&_FLAG_ATOMIC != 0 {
|
|
211
|
+
ret |= IOCAP_BATCH_ATOMIC
|
|
212
|
+
}
|
|
213
|
+
if f.flags&_FLAG_PSOW != 0 {
|
|
214
|
+
ret |= IOCAP_POWERSAFE_OVERWRITE
|
|
215
|
+
}
|
|
216
|
+
if runtime.GOOS == "windows" {
|
|
217
|
+
ret |= IOCAP_UNDELETABLE_WHEN_OPEN
|
|
218
|
+
}
|
|
219
|
+
return ret
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
func (f *vfsFile) SizeHint(size int64) error {
|
|
223
|
+
return osAllocate(f.File, size)
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
func (f *vfsFile) HasMoved() (bool, error) {
|
|
227
|
+
if runtime.GOOS == "windows" {
|
|
228
|
+
return false, nil
|
|
229
|
+
}
|
|
230
|
+
fi, err := f.Stat()
|
|
231
|
+
if err != nil {
|
|
232
|
+
return false, err
|
|
233
|
+
}
|
|
234
|
+
pi, err := os.Stat(f.Name())
|
|
235
|
+
if errors.Is(err, fs.ErrNotExist) {
|
|
236
|
+
return true, nil
|
|
237
|
+
}
|
|
238
|
+
if err != nil {
|
|
239
|
+
return false, err
|
|
240
|
+
}
|
|
241
|
+
return !os.SameFile(fi, pi), nil
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
func (f *vfsFile) LockState() LockLevel { return f.lock }
|
|
245
|
+
func (f *vfsFile) PowersafeOverwrite() bool { return f.flags&_FLAG_PSOW != 0 }
|
|
246
|
+
func (f *vfsFile) PersistWAL() bool { return f.flags&_FLAG_KEEP_WAL != 0 }
|
|
247
|
+
|
|
248
|
+
func (f *vfsFile) SetPowersafeOverwrite(psow bool) {
|
|
249
|
+
f.flags &^= _FLAG_PSOW
|
|
250
|
+
if psow {
|
|
251
|
+
f.flags |= _FLAG_PSOW
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
func (f *vfsFile) SetPersistWAL(keepWAL bool) {
|
|
256
|
+
f.flags &^= _FLAG_KEEP_WAL
|
|
257
|
+
if keepWAL {
|
|
258
|
+
f.flags |= _FLAG_KEEP_WAL
|
|
259
|
+
}
|
|
260
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
package vfs
|
|
2
|
+
|
|
3
|
+
import (
|
|
4
|
+
"net/url"
|
|
5
|
+
"strconv"
|
|
6
|
+
|
|
7
|
+
"github.com/ncruces/go-sqlite3/internal/sqlite3_wrap"
|
|
8
|
+
"github.com/ncruces/go-sqlite3/internal/util"
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
// Filename is used by SQLite to pass filenames
|
|
12
|
+
// to the Open method of a VFS.
|
|
13
|
+
//
|
|
14
|
+
// https://sqlite.org/c3ref/filename.html
|
|
15
|
+
type Filename struct {
|
|
16
|
+
wrp *sqlite3_wrap.Wrapper
|
|
17
|
+
zPath ptr_t
|
|
18
|
+
flags OpenFlag
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// GetFilename is an internal API users should not call directly.
|
|
22
|
+
func GetFilename(wrp *sqlite3_wrap.Wrapper, id ptr_t, flags OpenFlag) *Filename {
|
|
23
|
+
if id == 0 {
|
|
24
|
+
return nil
|
|
25
|
+
}
|
|
26
|
+
return &Filename{
|
|
27
|
+
wrp: wrp,
|
|
28
|
+
zPath: id,
|
|
29
|
+
flags: flags,
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// String returns this filename as a string.
|
|
34
|
+
func (n *Filename) String() string {
|
|
35
|
+
if n == nil || n.zPath == 0 {
|
|
36
|
+
return ""
|
|
37
|
+
}
|
|
38
|
+
return n.wrp.ReadString(n.zPath, _MAX_PATHNAME)
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Database returns the name of the corresponding database file.
|
|
42
|
+
//
|
|
43
|
+
// https://sqlite.org/c3ref/filename_database.html
|
|
44
|
+
func (n *Filename) Database() string {
|
|
45
|
+
if n == nil || n.zPath == 0 {
|
|
46
|
+
return ""
|
|
47
|
+
}
|
|
48
|
+
return n.path(n.wrp.Xsqlite3_filename_database)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// Journal returns the name of the corresponding rollback journal file.
|
|
52
|
+
//
|
|
53
|
+
// https://sqlite.org/c3ref/filename_database.html
|
|
54
|
+
func (n *Filename) Journal() string {
|
|
55
|
+
if n == nil || n.zPath == 0 {
|
|
56
|
+
return ""
|
|
57
|
+
}
|
|
58
|
+
return n.path(n.wrp.Xsqlite3_filename_journal)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// WAL returns the name of the corresponding WAL file.
|
|
62
|
+
//
|
|
63
|
+
// https://sqlite.org/c3ref/filename_database.html
|
|
64
|
+
func (n *Filename) WAL() string {
|
|
65
|
+
if n == nil || n.zPath == 0 {
|
|
66
|
+
return ""
|
|
67
|
+
}
|
|
68
|
+
return n.path(n.wrp.Xsqlite3_filename_wal)
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
func (n *Filename) path(fn func(int32) int32) string {
|
|
72
|
+
if n.flags&(OPEN_MAIN_DB|OPEN_MAIN_JOURNAL|OPEN_WAL) == 0 {
|
|
73
|
+
return ""
|
|
74
|
+
}
|
|
75
|
+
name := ptr_t(fn(int32(n.zPath)))
|
|
76
|
+
return n.wrp.ReadString(name, _MAX_PATHNAME)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// DatabaseFile returns the main database [File] corresponding to a journal.
|
|
80
|
+
//
|
|
81
|
+
// https://sqlite.org/c3ref/database_file_object.html
|
|
82
|
+
func (n *Filename) DatabaseFile() File {
|
|
83
|
+
if n == nil || n.zPath == 0 {
|
|
84
|
+
return nil
|
|
85
|
+
}
|
|
86
|
+
if n.flags&(OPEN_MAIN_DB|OPEN_MAIN_JOURNAL|OPEN_WAL) == 0 {
|
|
87
|
+
return nil
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
pFile := ptr_t(n.wrp.Xsqlite3_database_file_object(int32(n.zPath)))
|
|
91
|
+
file, _ := vfsFileGet(n.wrp, ptr_t(pFile)).(File)
|
|
92
|
+
return file
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// URIParameter returns the value of a URI parameter.
|
|
96
|
+
//
|
|
97
|
+
// https://sqlite.org/c3ref/uri_boolean.html
|
|
98
|
+
func (n *Filename) URIParameter(key string) string {
|
|
99
|
+
if n == nil || n.zPath == 0 {
|
|
100
|
+
return ""
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
ptr := ptr_t(n.wrp.Xsqlite3_uri_key(int32(n.zPath), 0))
|
|
104
|
+
if ptr == 0 {
|
|
105
|
+
return ""
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Parse the format from:
|
|
109
|
+
// https://github.com/sqlite/sqlite/blob/41fda52/src/pager.c#L4821-L4864
|
|
110
|
+
// This avoids having to alloc/free the key just to find a value.
|
|
111
|
+
mem := n.wrp.Memory
|
|
112
|
+
for {
|
|
113
|
+
k := mem.ReadString(ptr, _MAX_NAME)
|
|
114
|
+
if k == "" {
|
|
115
|
+
return ""
|
|
116
|
+
}
|
|
117
|
+
ptr += ptr_t(len(k)) + 1
|
|
118
|
+
|
|
119
|
+
v := mem.ReadString(ptr, _MAX_NAME)
|
|
120
|
+
if k == key {
|
|
121
|
+
return v
|
|
122
|
+
}
|
|
123
|
+
ptr += ptr_t(len(v)) + 1
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// URIParameters obtains values for URI parameters.
|
|
128
|
+
//
|
|
129
|
+
// https://sqlite.org/c3ref/uri_boolean.html
|
|
130
|
+
func (n *Filename) URIParameters() url.Values {
|
|
131
|
+
if n == nil || n.zPath == 0 {
|
|
132
|
+
return nil
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
ptr := ptr_t(n.wrp.Xsqlite3_uri_key(int32(n.zPath), 0))
|
|
136
|
+
if ptr == 0 {
|
|
137
|
+
return nil
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
var params url.Values
|
|
141
|
+
|
|
142
|
+
// Parse the format from:
|
|
143
|
+
// https://github.com/sqlite/sqlite/blob/41fda52/src/pager.c#L4821-L4864
|
|
144
|
+
// This is the only way to support multiple valued keys.
|
|
145
|
+
mem := n.wrp.Memory
|
|
146
|
+
for {
|
|
147
|
+
k := mem.ReadString(ptr, _MAX_NAME)
|
|
148
|
+
if k == "" {
|
|
149
|
+
return params
|
|
150
|
+
}
|
|
151
|
+
ptr += ptr_t(len(k)) + 1
|
|
152
|
+
|
|
153
|
+
v := mem.ReadString(ptr, _MAX_NAME)
|
|
154
|
+
if params == nil {
|
|
155
|
+
params = url.Values{}
|
|
156
|
+
}
|
|
157
|
+
params.Add(k, v)
|
|
158
|
+
ptr += ptr_t(len(v)) + 1
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// URIBoolean returns the value of a URI parameter as a boolean.
|
|
163
|
+
//
|
|
164
|
+
// https://sqlite.org/c3ref/uri_boolean.html
|
|
165
|
+
func (n *Filename) URIBoolean(key string, def bool) bool {
|
|
166
|
+
b, ok := util.ParseBool(n.URIParameter(key))
|
|
167
|
+
if ok {
|
|
168
|
+
return b
|
|
169
|
+
}
|
|
170
|
+
return def
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// URIInt64 returns the value of a URI parameter converted
|
|
174
|
+
// to a 64-bit signed integer.
|
|
175
|
+
//
|
|
176
|
+
// https://sqlite.org/c3ref/uri_boolean.html
|
|
177
|
+
func (n *Filename) URIInt64(key string, def int64) int64 {
|
|
178
|
+
s := n.URIParameter(key)
|
|
179
|
+
if s == "" {
|
|
180
|
+
return def
|
|
181
|
+
}
|
|
182
|
+
i, err := strconv.ParseInt(s, 10, 64)
|
|
183
|
+
if err != nil {
|
|
184
|
+
return def
|
|
185
|
+
}
|
|
186
|
+
return i
|
|
187
|
+
}
|