// Code generated by 'ccgo -o vfs_darwin_arm64.go c/vfs.c -I../testdata/sqlite-amalgamation-3380500 -lmodernc.org/sqlite/lib -pkgname vfs -nocapi -export-externs X -D SQLITE_OS_UNIX -hide=vfsFullPathname -hide=vfsOpen -hide=vfsRead -hide=vfsAccess -hide=vfsFileSize -hide=vfsClose', DO NOT EDIT. package vfs import ( "math" "reflect" "sync/atomic" "unsafe" "modernc.org/libc" "modernc.org/libc/sys/types" "modernc.org/sqlite/lib" ) var _ = math.Pi var _ reflect.Kind var _ atomic.Value var _ unsafe.Pointer var _ *libc.TLS var _ types.Size_t const ( FILESEC_OWNER = 1 FILESEC_GROUP = 2 FILESEC_UUID = 3 FILESEC_MODE = 4 FILESEC_ACL = 5 FILESEC_GRPUUID = 6 FILESEC_ACL_RAW = 100 FILESEC_ACL_ALLOCSIZE = 101 ) const ( _CLOCK_REALTIME = 0 _CLOCK_MONOTONIC = 6 _CLOCK_MONOTONIC_RAW = 4 _CLOCK_MONOTONIC_RAW_APPROX = 5 _CLOCK_UPTIME_RAW = 8 _CLOCK_UPTIME_RAW_APPROX = 9 _CLOCK_PROCESS_CPUTIME_ID = 12 _CLOCK_THREAD_CPUTIME_ID = 16 ) type ptrdiff_t = int64 type size_t = uint64 type wchar_t = int32 var X__darwin_check_fd_set_overflow uintptr type va_list = uintptr type sqlite_int64 = int64 type sqlite_uint64 = uint64 type sqlite3_int64 = sqlite_int64 type sqlite3_uint64 = sqlite_uint64 type sqlite3_callback = uintptr type sqlite3_file1 = struct{ pMethods uintptr } type sqlite3_file = sqlite3_file1 type sqlite3_io_methods1 = struct { iVersion int32 _ [4]byte xClose uintptr xRead uintptr xWrite uintptr xTruncate uintptr xSync uintptr xFileSize uintptr xLock uintptr xUnlock uintptr xCheckReservedLock uintptr xFileControl uintptr xSectorSize uintptr xDeviceCharacteristics uintptr xShmMap uintptr xShmLock uintptr xShmBarrier uintptr xShmUnmap uintptr xFetch uintptr xUnfetch uintptr } type sqlite3_io_methods = sqlite3_io_methods1 type sqlite3_vfs1 = struct { iVersion int32 szOsFile int32 mxPathname int32 _ [4]byte pNext uintptr zName uintptr pAppData uintptr xOpen uintptr xDelete uintptr xAccess uintptr xFullPathname uintptr xDlOpen uintptr xDlError uintptr xDlSym uintptr xDlClose uintptr xRandomness uintptr xSleep uintptr xCurrentTime uintptr xGetLastError uintptr xCurrentTimeInt64 uintptr xSetSystemCall uintptr xGetSystemCall uintptr xNextSystemCall uintptr } type sqlite3_vfs = sqlite3_vfs1 type sqlite3_syscall_ptr = uintptr type sqlite3_mem_methods1 = struct { xMalloc uintptr xFree uintptr xRealloc uintptr xSize uintptr xRoundup uintptr xInit uintptr xShutdown uintptr pAppData uintptr } type sqlite3_mem_methods = sqlite3_mem_methods1 type sqlite3_destructor_type = uintptr type sqlite3_vtab1 = struct { pModule uintptr nRef int32 _ [4]byte zErrMsg uintptr } type sqlite3_vtab = sqlite3_vtab1 type sqlite3_index_info1 = struct { nConstraint int32 _ [4]byte aConstraint uintptr nOrderBy int32 _ [4]byte aOrderBy uintptr aConstraintUsage uintptr idxNum int32 _ [4]byte idxStr uintptr needToFreeIdxStr int32 orderByConsumed int32 estimatedCost float64 estimatedRows sqlite3_int64 idxFlags int32 _ [4]byte colUsed sqlite3_uint64 } type sqlite3_index_info = sqlite3_index_info1 type sqlite3_vtab_cursor1 = struct{ pVtab uintptr } type sqlite3_vtab_cursor = sqlite3_vtab_cursor1 type sqlite3_module1 = struct { iVersion int32 _ [4]byte xCreate uintptr xConnect uintptr xBestIndex uintptr xDisconnect uintptr xDestroy uintptr xOpen uintptr xClose uintptr xFilter uintptr xNext uintptr xEof uintptr xColumn uintptr xRowid uintptr xUpdate uintptr xBegin uintptr xSync uintptr xCommit uintptr xRollback uintptr xFindFunction uintptr xRename uintptr xSavepoint uintptr xRelease uintptr xRollbackTo uintptr xShadowName uintptr } type sqlite3_module = sqlite3_module1 type sqlite3_index_constraint = struct { iColumn int32 op uint8 usable uint8 _ [2]byte iTermOffset int32 } type sqlite3_index_orderby = struct { iColumn int32 desc uint8 _ [3]byte } type sqlite3_index_constraint_usage = struct { argvIndex int32 omit uint8 _ [3]byte } type sqlite3_mutex_methods1 = struct { xMutexInit uintptr xMutexEnd uintptr xMutexAlloc uintptr xMutexFree uintptr xMutexEnter uintptr xMutexTry uintptr xMutexLeave uintptr xMutexHeld uintptr xMutexNotheld uintptr } type sqlite3_mutex_methods = sqlite3_mutex_methods1 type sqlite3_pcache_page1 = struct { pBuf uintptr pExtra uintptr } type sqlite3_pcache_page = sqlite3_pcache_page1 type sqlite3_pcache_methods21 = struct { iVersion int32 _ [4]byte pArg uintptr xInit uintptr xShutdown uintptr xCreate uintptr xCachesize uintptr xPagecount uintptr xFetch uintptr xUnpin uintptr xRekey uintptr xTruncate uintptr xDestroy uintptr xShrink uintptr } type sqlite3_pcache_methods2 = sqlite3_pcache_methods21 type sqlite3_pcache_methods1 = struct { pArg uintptr xInit uintptr xShutdown uintptr xCreate uintptr xCachesize uintptr xPagecount uintptr xFetch uintptr xUnpin uintptr xRekey uintptr xTruncate uintptr xDestroy uintptr } type sqlite3_pcache_methods = sqlite3_pcache_methods1 type sqlite3_snapshot1 = struct{ hidden [48]uint8 } type sqlite3_snapshot = sqlite3_snapshot1 type sqlite3_rtree_geometry1 = struct { pContext uintptr nParam int32 _ [4]byte aParam uintptr pUser uintptr xDelUser uintptr } type sqlite3_rtree_geometry = sqlite3_rtree_geometry1 type sqlite3_rtree_query_info1 = struct { pContext uintptr nParam int32 _ [4]byte aParam uintptr pUser uintptr xDelUser uintptr aCoord uintptr anQueue uintptr nCoord int32 iLevel int32 mxLevel int32 _ [4]byte iRowid sqlite3_int64 rParentScore sqlite3_rtree_dbl eParentWithin int32 eWithin int32 rScore sqlite3_rtree_dbl apSqlParam uintptr } type sqlite3_rtree_query_info = sqlite3_rtree_query_info1 type sqlite3_rtree_dbl = float64 type Fts5ExtensionApi1 = struct { iVersion int32 _ [4]byte xUserData uintptr xColumnCount uintptr xRowCount uintptr xColumnTotalSize uintptr xTokenize uintptr xPhraseCount uintptr xPhraseSize uintptr xInstCount uintptr xInst uintptr xRowid uintptr xColumnText uintptr xColumnSize uintptr xQueryPhrase uintptr xSetAuxdata uintptr xGetAuxdata uintptr xPhraseFirst uintptr xPhraseNext uintptr xPhraseFirstColumn uintptr xPhraseNextColumn uintptr } type Fts5ExtensionApi = Fts5ExtensionApi1 type Fts5PhraseIter1 = struct { a uintptr b uintptr } type Fts5PhraseIter = Fts5PhraseIter1 type fts5_extension_function = uintptr type fts5_tokenizer1 = struct { xCreate uintptr xDelete uintptr xTokenize uintptr } type fts5_tokenizer = fts5_tokenizer1 type fts5_api1 = struct { iVersion int32 _ [4]byte xCreateTokenizer uintptr xFindTokenizer uintptr xCreateFunction uintptr } type fts5_api = fts5_api1 type __darwin_pthread_handler_rec = struct { __routine uintptr __arg uintptr __next uintptr } type _opaque_pthread_attr_t = struct { __sig int64 __opaque [56]int8 } type _opaque_pthread_cond_t = struct { __sig int64 __opaque [40]int8 } type _opaque_pthread_condattr_t = struct { __sig int64 __opaque [8]int8 } type _opaque_pthread_mutex_t = struct { __sig int64 __opaque [56]int8 } type _opaque_pthread_mutexattr_t = struct { __sig int64 __opaque [8]int8 } type _opaque_pthread_once_t = struct { __sig int64 __opaque [8]int8 } type _opaque_pthread_rwlock_t = struct { __sig int64 __opaque [192]int8 } type _opaque_pthread_rwlockattr_t = struct { __sig int64 __opaque [16]int8 } type _opaque_pthread_t = struct { __sig int64 __cleanup_stack uintptr __opaque [8176]int8 } type int8_t = int8 type int16_t = int16 type int32_t = int32 type int64_t = int64 type u_int8_t = uint8 type u_int16_t = uint16 type u_int32_t = uint32 type u_int64_t = uint64 type register_t = int64_t type intptr_t = int64 type uintptr_t = uint64 type user_addr_t = u_int64_t type user_size_t = u_int64_t type user_ssize_t = int64_t type user_long_t = int64_t type user_ulong_t = u_int64_t type user_time_t = int64_t type user_off_t = int64_t type syscall_arg_t = u_int64_t type rsize_t = uint64 type errno_t = int32 type ssize_t = int64 type uint64_t = uint64 type int_least64_t = int64_t type uint_least64_t = uint64_t type int_fast64_t = int64_t type uint_fast64_t = uint64_t type uint32_t = uint32 type int_least32_t = int32_t type uint_least32_t = uint32_t type int_fast32_t = int32_t type uint_fast32_t = uint32_t type uint16_t = uint16 type int_least16_t = int16_t type uint_least16_t = uint16_t type int_fast16_t = int16_t type uint_fast16_t = uint16_t type uint8_t = uint8 type int_least8_t = int8_t type uint_least8_t = uint8_t type int_fast8_t = int8_t type uint_fast8_t = uint8_t type intmax_t = int64 type uintmax_t = uint64 func _OSSwapInt16(tls *libc.TLS, _data uint16_t) uint16_t { return uint16_t(int32(_data)<<8 | int32(_data)>>8) } func _OSSwapInt32(tls *libc.TLS, _data uint32_t) uint32_t { _data = libc.X__builtin_bswap32(tls, _data) return _data } func _OSSwapInt64(tls *libc.TLS, _data uint64_t) uint64_t { return libc.X__builtin_bswap64(tls, _data) } type _OSUnalignedU16 = struct{ __val uint16_t } type _OSUnalignedU32 = struct{ __val uint32_t } type _OSUnalignedU64 = struct{ __val uint64_t } type u_char = uint8 type u_short = uint16 type u_int = uint32 type u_long = uint64 type ushort = uint16 type uint = uint32 type u_quad_t = u_int64_t type quad_t = int64_t type qaddr_t = uintptr type caddr_t = uintptr type daddr_t = int32_t type dev_t = int32 type fixpt_t = u_int32_t type blkcnt_t = int64 type blksize_t = int32 type gid_t = uint32 type in_addr_t = uint32 type in_port_t = uint16 type ino_t = uint64 type ino64_t = uint64 type key_t = int32 type mode_t = uint16 type nlink_t = uint16 type id_t = uint32 type pid_t = int32 type off_t = int64 type segsz_t = int32_t type swblk_t = int32_t type uid_t = uint32 type clock_t = uint64 type time_t = int64 type useconds_t = uint32 type suseconds_t = int32 type fd_set1 = struct{ fds_bits [32]int32 } type fd_set = fd_set1 func X__darwin_check_fd_set(tls *libc.TLS, _a int32, _b uintptr) int32 { if uintptr_t(uintptr(unsafe.Pointer(&X__darwin_check_fd_set_overflow))) != uint64(0) { return (*struct { f func(*libc.TLS, int32, uintptr, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{X__darwin_check_fd_set_overflow})).f(tls, _a, _b, 0) } else { return 1 } return int32(0) } func X__darwin_fd_isset(tls *libc.TLS, _fd int32, _p uintptr) int32 { if X__darwin_check_fd_set(tls, _fd, _p) != 0 { return *(*int32)(unsafe.Pointer(_p + uintptr(uint64(_fd)/(uint64(unsafe.Sizeof(int32(0)))*uint64(8)))*4)) & int32(uint64(1)<<(uint64(_fd)%(uint64(unsafe.Sizeof(int32(0)))*uint64(8)))) } return 0 } func X__darwin_fd_set(tls *libc.TLS, _fd int32, _p uintptr) { if X__darwin_check_fd_set(tls, _fd, _p) != 0 { *(*int32)(unsafe.Pointer(_p + uintptr(uint64(_fd)/(uint64(unsafe.Sizeof(int32(0)))*uint64(8)))*4)) |= int32(uint64(1) << (uint64(_fd) % (uint64(unsafe.Sizeof(int32(0))) * uint64(8)))) } } func X__darwin_fd_clr(tls *libc.TLS, _fd int32, _p uintptr) { if X__darwin_check_fd_set(tls, _fd, _p) != 0 { *(*int32)(unsafe.Pointer(_p + uintptr(uint64(_fd)/(uint64(unsafe.Sizeof(int32(0)))*uint64(8)))*4)) &= ^int32(uint64(1) << (uint64(_fd) % (uint64(unsafe.Sizeof(int32(0))) * uint64(8)))) } } type fd_mask = int32 type pthread_attr_t = _opaque_pthread_attr_t type pthread_cond_t = _opaque_pthread_cond_t type pthread_condattr_t = _opaque_pthread_condattr_t type pthread_mutex_t = _opaque_pthread_mutex_t type pthread_mutexattr_t = _opaque_pthread_mutexattr_t type pthread_once_t = _opaque_pthread_once_t type pthread_rwlock_t = _opaque_pthread_rwlock_t type pthread_rwlockattr_t = _opaque_pthread_rwlockattr_t type pthread_t = uintptr type pthread_key_t = uint64 type fsblkcnt_t = uint32 type fsfilcnt_t = uint32 type timespec = struct { tv_sec int64 tv_nsec int64 } type ostat = struct { st_dev uint16 _ [6]byte st_ino ino_t st_mode mode_t st_nlink nlink_t st_uid uint16 st_gid uint16 st_rdev uint16 _ [2]byte st_size int32 st_atimespec struct { tv_sec int64 tv_nsec int64 } st_mtimespec struct { tv_sec int64 tv_nsec int64 } st_ctimespec struct { tv_sec int64 tv_nsec int64 } st_blksize int32 st_blocks int32 st_flags uint32 st_gen uint32 } type stat = struct { st_dev dev_t st_mode mode_t st_nlink nlink_t st_ino uint64 st_uid uid_t st_gid gid_t st_rdev dev_t _ [4]byte st_atimespec struct { tv_sec int64 tv_nsec int64 } st_mtimespec struct { tv_sec int64 tv_nsec int64 } st_ctimespec struct { tv_sec int64 tv_nsec int64 } st_birthtimespec struct { tv_sec int64 tv_nsec int64 } st_size off_t st_blocks blkcnt_t st_blksize blksize_t st_flags uint32 st_gen uint32 st_lspare int32 st_qspare [2]int64 } type filesec_t = uintptr type flock = struct { l_start off_t l_len off_t l_pid pid_t l_type int16 l_whence int16 } type flocktimeout = struct { fl struct { l_start off_t l_len off_t l_pid pid_t l_type int16 l_whence int16 } timeout struct { tv_sec int64 tv_nsec int64 } } type radvisory = struct { ra_offset off_t ra_count int32 _ [4]byte } type fsignatures = struct { fs_file_start off_t fs_blob_start uintptr fs_blob_size size_t fs_fsignatures_size size_t fs_cdhash [20]int8 fs_hash_type int32 } type fsignatures_t = fsignatures type fsupplement = struct { fs_file_start off_t fs_blob_start off_t fs_blob_size size_t fs_orig_fd int32 _ [4]byte } type fsupplement_t = fsupplement type fchecklv = struct { lv_file_start off_t lv_error_message_size size_t lv_error_message uintptr } type fchecklv_t = fchecklv type fgetsigsinfo = struct { fg_file_start off_t fg_info_request int32 fg_sig_is_platform int32 } type fgetsigsinfo_t = fgetsigsinfo type fstore = struct { fst_flags uint32 fst_posmode int32 fst_offset off_t fst_length off_t fst_bytesalloc off_t } type fstore_t = fstore type fpunchhole = struct { fp_flags uint32 reserved uint32 fp_offset off_t fp_length off_t } type fpunchhole_t = fpunchhole type ftrimactivefile = struct { fta_offset off_t fta_length off_t } type ftrimactivefile_t = ftrimactivefile type fspecread = struct { fsr_flags uint32 reserved uint32 fsr_offset off_t fsr_length off_t } type fspecread_t = fspecread type fbootstraptransfer = struct { fbt_offset off_t fbt_length size_t fbt_buffer uintptr } type fbootstraptransfer_t = fbootstraptransfer type log2phys = struct { l2p_flags uint32 _ [4]byte l2p_contigbytes off_t l2p_devoffset off_t } type filesec_property_t = uint32 type accessx_descriptor = struct { ad_name_offset uint32 ad_flags int32 ad_pad [2]int32 } type kauth_cred_t = uintptr type posix_cred_t = uintptr type sig_atomic_t = int32 type __darwin_arm_exception_state = struct { __exception uint32 __fsr uint32 __far uint32 } type __darwin_arm_exception_state64 = struct { __far uint64 __esr uint32 __exception uint32 } type __darwin_arm_thread_state = struct { __r [13]uint32 __sp uint32 __lr uint32 __pc uint32 __cpsr uint32 } type __darwin_arm_thread_state64 = struct { __x [29]uint64 __fp uint64 __lr uint64 __sp uint64 __pc uint64 __cpsr uint32 __pad uint32 } type __darwin_arm_vfp_state = struct { __r [64]uint32 __fpscr uint32 } type __darwin_arm_neon_state64 = struct { __v [32]struct { lo uint64 hi uint64 } __fpsr uint32 __fpcr uint32 } type __darwin_arm_neon_state = struct { __v [16]struct { lo uint64 hi uint64 } __fpsr uint32 __fpcr uint32 } type __arm_pagein_state = struct{ __pagein_error int32 } type __arm_legacy_debug_state = struct { __bvr [16]uint32 __bcr [16]uint32 __wvr [16]uint32 __wcr [16]uint32 } type __darwin_arm_debug_state32 = struct { __bvr [16]uint32 __bcr [16]uint32 __wvr [16]uint32 __wcr [16]uint32 __mdscr_el1 uint64 } type __darwin_arm_debug_state64 = struct { __bvr [16]uint64 __bcr [16]uint64 __wvr [16]uint64 __wcr [16]uint64 __mdscr_el1 uint64 } type __darwin_arm_cpmu_state64 = struct{ __ctrs [16]uint64 } type __darwin_mcontext32 = struct { __es struct { __exception uint32 __fsr uint32 __far uint32 } __ss struct { __r [13]uint32 __sp uint32 __lr uint32 __pc uint32 __cpsr uint32 } __fs struct { __r [64]uint32 __fpscr uint32 } } type __darwin_mcontext64 = struct { __es struct { __far uint64 __esr uint32 __exception uint32 } __ss struct { __x [29]uint64 __fp uint64 __lr uint64 __sp uint64 __pc uint64 __cpsr uint32 __pad uint32 } __ns struct { __v [32]struct { lo uint64 hi uint64 } __fpsr uint32 __fpcr uint32 } } type mcontext_t = uintptr type __darwin_sigaltstack = struct { ss_sp uintptr ss_size uint64 ss_flags int32 _ [4]byte } type stack_t = __darwin_sigaltstack type __darwin_ucontext = struct { uc_onstack int32 uc_sigmask uint32 uc_stack struct { ss_sp uintptr ss_size uint64 ss_flags int32 _ [4]byte } uc_link uintptr uc_mcsize uint64 uc_mcontext uintptr } type ucontext_t = __darwin_ucontext type sigset_t = uint32 type sigval = struct { _ [0]uint64 sival_int int32 _ [4]byte } type sigevent = struct { sigev_notify int32 sigev_signo int32 sigev_value struct { _ [0]uint64 sival_int int32 _ [4]byte } sigev_notify_function uintptr sigev_notify_attributes uintptr } type __siginfo = struct { si_signo int32 si_errno int32 si_code int32 si_pid pid_t si_uid uid_t si_status int32 si_addr uintptr si_value struct { _ [0]uint64 sival_int int32 _ [4]byte } si_band int64 __pad [7]uint64 } type siginfo_t = __siginfo type __sigaction_u = struct{ __sa_handler uintptr } type __sigaction = struct { __sigaction_u struct{ __sa_handler uintptr } sa_tramp uintptr sa_mask sigset_t sa_flags int32 } type sigaction = struct { __sigaction_u struct{ __sa_handler uintptr } sa_mask sigset_t sa_flags int32 } type sig_t = uintptr type sigvec = struct { sv_handler uintptr sv_mask int32 sv_flags int32 } type sigstack = struct { ss_sp uintptr ss_onstack int32 _ [4]byte } type timeval = struct { tv_sec int64 tv_usec int32 _ [4]byte } type uuid_t = [16]uint8 type tm = struct { tm_sec int32 tm_min int32 tm_hour int32 tm_mday int32 tm_mon int32 tm_year int32 tm_wday int32 tm_yday int32 tm_isdst int32 _ [4]byte tm_gmtoff int64 tm_zone uintptr } type clockid_t = uint32 type VFSFile1 = struct { base sqlite3_file fsFile uintptr fd int32 _ [4]byte aBuffer uintptr nBuffer int32 _ [4]byte iBufferOfst sqlite3_int64 } type VFSFile = VFSFile1 func vfsDirectWrite(tls *libc.TLS, p uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 { bp := tls.Alloc(16) defer tls.Free(16) var ofst off_t var nWrite size_t libc.X__builtin_printf(tls, ts, libc.VaList(bp, uintptr(unsafe.Pointer(&__func__)), 178)) libc.X__builtin_abort(tls) ofst = libc.Xlseek(tls, (*VFSFile)(unsafe.Pointer(p)).fd, iOfst, 0) if ofst != iOfst { return 10 | int32(3)<<8 } nWrite = size_t(libc.Xwrite(tls, (*VFSFile)(unsafe.Pointer(p)).fd, zBuf, uint64(iAmt))) if nWrite != size_t(iAmt) { return 10 | int32(3)<<8 } return 0 } var __func__ = *(*[15]int8)(unsafe.Pointer(ts + 13)) func vfsFlushBuffer(tls *libc.TLS, p uintptr) int32 { bp := tls.Alloc(16) defer tls.Free(16) libc.X__builtin_printf(tls, ts, libc.VaList(bp, uintptr(unsafe.Pointer(&__func__1)), 198)) libc.X__builtin_abort(tls) var rc int32 = 0 if (*VFSFile)(unsafe.Pointer(p)).nBuffer != 0 { rc = vfsDirectWrite(tls, p, (*VFSFile)(unsafe.Pointer(p)).aBuffer, (*VFSFile)(unsafe.Pointer(p)).nBuffer, (*VFSFile)(unsafe.Pointer(p)).iBufferOfst) (*VFSFile)(unsafe.Pointer(p)).nBuffer = 0 } return rc } var __func__1 = *(*[15]int8)(unsafe.Pointer(ts + 28)) func vfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 { bp := tls.Alloc(16) defer tls.Free(16) libc.X__builtin_printf(tls, ts, libc.VaList(bp, uintptr(unsafe.Pointer(&__func__4)), 273)) libc.X__builtin_abort(tls) var p uintptr = pFile if (*VFSFile)(unsafe.Pointer(p)).aBuffer != 0 { var z uintptr = zBuf var n int32 = iAmt var i sqlite3_int64 = iOfst for n > 0 { var nCopy int32 if (*VFSFile)(unsafe.Pointer(p)).nBuffer == 8192 || (*VFSFile)(unsafe.Pointer(p)).iBufferOfst+sqlite3_int64((*VFSFile)(unsafe.Pointer(p)).nBuffer) != i { var rc int32 = vfsFlushBuffer(tls, p) if rc != 0 { return rc } } if libc.X__builtin_expect(tls, libc.BoolInt64(!((*VFSFile)(unsafe.Pointer(p)).nBuffer == 0 || (*VFSFile)(unsafe.Pointer(p)).iBufferOfst+sqlite3_int64((*VFSFile)(unsafe.Pointer(p)).nBuffer) == i)), int64(0)) != 0 { libc.X__assert_rtn(tls, uintptr(unsafe.Pointer(&__func__4)), ts+43, 294, ts+51) } else { } (*VFSFile)(unsafe.Pointer(p)).iBufferOfst = i - sqlite3_int64((*VFSFile)(unsafe.Pointer(p)).nBuffer) nCopy = 8192 - (*VFSFile)(unsafe.Pointer(p)).nBuffer if nCopy > n { nCopy = n } libc.X__builtin___memcpy_chk(tls, (*VFSFile)(unsafe.Pointer(p)).aBuffer+uintptr((*VFSFile)(unsafe.Pointer(p)).nBuffer), z, uint64(nCopy), libc.X__builtin_object_size(tls, (*VFSFile)(unsafe.Pointer(p)).aBuffer+uintptr((*VFSFile)(unsafe.Pointer(p)).nBuffer), 0)) *(*int32)(unsafe.Pointer(p + 32)) += nCopy n = n - nCopy i = i + sqlite3_int64(nCopy) z += uintptr(nCopy) } } else { return vfsDirectWrite(tls, p, zBuf, iAmt, iOfst) } return 0 } var __func__4 = *(*[9]int8)(unsafe.Pointer(ts + 97)) func vfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 { return 0 } func vfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 { bp := tls.Alloc(16) defer tls.Free(16) libc.X__builtin_printf(tls, ts, libc.VaList(bp, uintptr(unsafe.Pointer(&__func__5)), 331)) libc.X__builtin_abort(tls) var p uintptr = pFile var rc int32 rc = vfsFlushBuffer(tls, p) if rc != 0 { return rc } rc = libc.Xfsync(tls, (*VFSFile)(unsafe.Pointer(p)).fd) return func() int32 { if rc == 0 { return 0 } return 10 | int32(4)<<8 }() } var __func__5 = *(*[8]int8)(unsafe.Pointer(ts + 106)) func vfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 { return 0 } func vfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 { return 0 } func vfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 { *(*int32)(unsafe.Pointer(pResOut)) = 0 return 0 } func vfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 { return 12 } func vfsSectorSize(tls *libc.TLS, pFile uintptr) int32 { return 0 } func vfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 { return 0 } func vfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 { bp := tls.Alloc(4129) defer tls.Free(4129) libc.X__builtin_printf(tls, ts, libc.VaList(bp, uintptr(unsafe.Pointer(&__func__8)), 473)) libc.X__builtin_abort(tls) var rc int32 rc = libc.Xunlink(tls, zPath) if rc != 0 && *(*int32)(unsafe.Pointer(libc.X__error(tls))) == 2 { return 0 } if rc == 0 && dirSync != 0 { var dfd int32 var i int32 sqlite3.Xsqlite3_snprintf(tls, 4096, bp+32, ts+114, libc.VaList(bp+16, zPath)) *(*int8)(unsafe.Pointer(bp + 32 + 4096)) = int8(0) for i = int32(libc.Xstrlen(tls, bp+32)); i > 1 && int32(*(*int8)(unsafe.Pointer(bp + 32 + uintptr(i)))) != '/'; i++ { } *(*int8)(unsafe.Pointer(bp + 32 + uintptr(i))) = int8(0) dfd = libc.Xopen(tls, bp+32, 0x0000, libc.VaList(bp+24, 0)) if dfd < 0 { rc = -1 } else { rc = libc.Xfsync(tls, dfd) libc.Xclose(tls, dfd) } } return func() int32 { if rc == 0 { return 0 } return 10 | int32(10)<<8 }() } var __func__8 = *(*[10]int8)(unsafe.Pointer(ts + 117)) func vfsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr { return uintptr(0) } func vfsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) { sqlite3.Xsqlite3_snprintf(tls, nByte, zErrMsg, ts+127, 0) *(*int8)(unsafe.Pointer(zErrMsg + uintptr(nByte-1))) = int8(0) } func vfsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, z uintptr) uintptr { return uintptr(0) } func vfsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) { return } func vfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zByte uintptr) int32 { return 0 } func vfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 { libc.Xsleep(tls, uint32(nMicro/1000000)) libc.Xusleep(tls, uint32(nMicro%1000000)) return nMicro } func vfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTime uintptr) int32 { var t time_t = libc.Xtime(tls, uintptr(0)) *(*float64)(unsafe.Pointer(pTime)) = float64(t)/86400.0 + 2440587.5 return 0 } func Xsqlite3_fsFS(tls *libc.TLS, zName uintptr, pAppData uintptr) uintptr { var p uintptr = libc.Xmalloc(tls, types.Size_t(unsafe.Sizeof(sqlite3_vfs{}))) if !(p != 0) { return uintptr(0) } *(*sqlite3_vfs)(unsafe.Pointer(p)) = sqlite3_vfs{ iVersion: 1, szOsFile: int32(unsafe.Sizeof(VFSFile{})), mxPathname: 4096, zName: zName, pAppData: pAppData, xOpen: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32 }{vfsOpen})), xDelete: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32) int32 }{vfsDelete})), xAccess: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32 }{vfsAccess})), xFullPathname: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32 }{vfsFullPathname})), xDlOpen: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) uintptr }{vfsDlOpen})), xDlError: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, int32, uintptr) }{vfsDlError})), xDlSym: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr }{vfsDlSym})), xDlClose: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) }{vfsDlClose})), xRandomness: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, int32, uintptr) int32 }{vfsRandomness})), xSleep: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, int32) int32 }{vfsSleep})), xCurrentTime: *(*uintptr)(unsafe.Pointer(&struct { f func(*libc.TLS, uintptr, uintptr) int32 }{vfsCurrentTime}))} return p } var ts1 = "TODO %s:%i:\n\x00vfsDirectWrite\x00vfsFlushBuffer\x00c/vfs.c\x00p->nBuffer==0 || p->iBufferOfst+p->nBuffer==i\x00vfsWrite\x00vfsSync\x00%s\x00vfsDelete\x00Loadable extensions are not supported\x00" var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data