typenative 0.1.2 → 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 +30 -21
- 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 +98 -6
- 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/parse-native.js +3 -2
- package/bin/parse-node.js +18 -2
- package/bin/transpiler.js +3529 -597
- package/bin/version.js +2 -0
- package/conformance.md +724 -258
- 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/tsparser/main.go +37 -3
- package/tsparser/tsparser.exe +2 -2
- package/types/typenative-go.d.ts +15159 -5
- package/types/typenative-npm.d.ts +2637 -30
- package/types/typenative.d.ts +1092 -56
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Copyright 2023 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris || zos
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
var mapper = &mmapper{
|
|
10
|
+
active: make(map[*byte][]byte),
|
|
11
|
+
mmap: mmap,
|
|
12
|
+
munmap: munmap,
|
|
13
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Copyright 2023 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build linux || netbsd
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
import "unsafe"
|
|
10
|
+
|
|
11
|
+
type mremapMmapper struct {
|
|
12
|
+
mmapper
|
|
13
|
+
mremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
var mapper = &mremapMmapper{
|
|
17
|
+
mmapper: mmapper{
|
|
18
|
+
active: make(map[*byte][]byte),
|
|
19
|
+
mmap: mmap,
|
|
20
|
+
munmap: munmap,
|
|
21
|
+
},
|
|
22
|
+
mremap: mremap,
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
func (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {
|
|
26
|
+
if newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 {
|
|
27
|
+
return nil, EINVAL
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
pOld := &oldData[cap(oldData)-1]
|
|
31
|
+
m.Lock()
|
|
32
|
+
defer m.Unlock()
|
|
33
|
+
bOld := m.active[pOld]
|
|
34
|
+
if bOld == nil || &bOld[0] != &oldData[0] {
|
|
35
|
+
return nil, EINVAL
|
|
36
|
+
}
|
|
37
|
+
newAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0)
|
|
38
|
+
if errno != nil {
|
|
39
|
+
return nil, errno
|
|
40
|
+
}
|
|
41
|
+
bNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength)
|
|
42
|
+
pNew := &bNew[cap(bNew)-1]
|
|
43
|
+
if flags&mremapDontunmap == 0 {
|
|
44
|
+
delete(m.active, pOld)
|
|
45
|
+
}
|
|
46
|
+
m.active[pNew] = bNew
|
|
47
|
+
return bNew, nil
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
func Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {
|
|
51
|
+
return mapper.Mremap(oldData, newLength, flags)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
func MremapPtr(oldAddr unsafe.Pointer, oldSize uintptr, newAddr unsafe.Pointer, newSize uintptr, flags int) (ret unsafe.Pointer, err error) {
|
|
55
|
+
xaddr, err := mapper.mremap(uintptr(oldAddr), oldSize, newSize, flags, uintptr(newAddr))
|
|
56
|
+
return unsafe.Pointer(xaddr), err
|
|
57
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// Copyright 2017 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos
|
|
6
|
+
|
|
7
|
+
// For Unix, get the pagesize from the runtime.
|
|
8
|
+
|
|
9
|
+
package unix
|
|
10
|
+
|
|
11
|
+
import "syscall"
|
|
12
|
+
|
|
13
|
+
func Getpagesize() int {
|
|
14
|
+
return syscall.Getpagesize()
|
|
15
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Copyright 2016 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package unix
|
|
6
|
+
|
|
7
|
+
import (
|
|
8
|
+
"errors"
|
|
9
|
+
"fmt"
|
|
10
|
+
"strconv"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
// Pledge implements the pledge syscall.
|
|
14
|
+
//
|
|
15
|
+
// This changes both the promises and execpromises; use PledgePromises or
|
|
16
|
+
// PledgeExecpromises to only change the promises or execpromises
|
|
17
|
+
// respectively.
|
|
18
|
+
//
|
|
19
|
+
// For more information see pledge(2).
|
|
20
|
+
func Pledge(promises, execpromises string) error {
|
|
21
|
+
if err := pledgeAvailable(); err != nil {
|
|
22
|
+
return err
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
pptr, err := BytePtrFromString(promises)
|
|
26
|
+
if err != nil {
|
|
27
|
+
return err
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
exptr, err := BytePtrFromString(execpromises)
|
|
31
|
+
if err != nil {
|
|
32
|
+
return err
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return pledge(pptr, exptr)
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// PledgePromises implements the pledge syscall.
|
|
39
|
+
//
|
|
40
|
+
// This changes the promises and leaves the execpromises untouched.
|
|
41
|
+
//
|
|
42
|
+
// For more information see pledge(2).
|
|
43
|
+
func PledgePromises(promises string) error {
|
|
44
|
+
if err := pledgeAvailable(); err != nil {
|
|
45
|
+
return err
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
pptr, err := BytePtrFromString(promises)
|
|
49
|
+
if err != nil {
|
|
50
|
+
return err
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return pledge(pptr, nil)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
// PledgeExecpromises implements the pledge syscall.
|
|
57
|
+
//
|
|
58
|
+
// This changes the execpromises and leaves the promises untouched.
|
|
59
|
+
//
|
|
60
|
+
// For more information see pledge(2).
|
|
61
|
+
func PledgeExecpromises(execpromises string) error {
|
|
62
|
+
if err := pledgeAvailable(); err != nil {
|
|
63
|
+
return err
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
exptr, err := BytePtrFromString(execpromises)
|
|
67
|
+
if err != nil {
|
|
68
|
+
return err
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
return pledge(nil, exptr)
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// majmin returns major and minor version number for an OpenBSD system.
|
|
75
|
+
func majmin() (major int, minor int, err error) {
|
|
76
|
+
var v Utsname
|
|
77
|
+
err = Uname(&v)
|
|
78
|
+
if err != nil {
|
|
79
|
+
return
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
major, err = strconv.Atoi(string(v.Release[0]))
|
|
83
|
+
if err != nil {
|
|
84
|
+
err = errors.New("cannot parse major version number returned by uname")
|
|
85
|
+
return
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
minor, err = strconv.Atoi(string(v.Release[2]))
|
|
89
|
+
if err != nil {
|
|
90
|
+
err = errors.New("cannot parse minor version number returned by uname")
|
|
91
|
+
return
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// pledgeAvailable checks for availability of the pledge(2) syscall
|
|
98
|
+
// based on the running OpenBSD version.
|
|
99
|
+
func pledgeAvailable() error {
|
|
100
|
+
maj, min, err := majmin()
|
|
101
|
+
if err != nil {
|
|
102
|
+
return err
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Require OpenBSD 6.4 as a minimum.
|
|
106
|
+
if maj < 6 || (maj == 6 && min <= 3) {
|
|
107
|
+
return fmt.Errorf("cannot call Pledge on OpenBSD %d.%d", maj, min)
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return nil
|
|
111
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright 2020 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build darwin && !ios
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
func ptrace(request int, pid int, addr uintptr, data uintptr) error {
|
|
10
|
+
return ptrace1(request, pid, addr, data)
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright 2020 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build ios
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
func ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {
|
|
10
|
+
return ENOTSUP
|
|
11
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Copyright 2012 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build (darwin && race) || (linux && race) || (freebsd && race)
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
"runtime"
|
|
11
|
+
"unsafe"
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
const raceenabled = true
|
|
15
|
+
|
|
16
|
+
func raceAcquire(addr unsafe.Pointer) {
|
|
17
|
+
runtime.RaceAcquire(addr)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
func raceReleaseMerge(addr unsafe.Pointer) {
|
|
21
|
+
runtime.RaceReleaseMerge(addr)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
func raceReadRange(addr unsafe.Pointer, len int) {
|
|
25
|
+
runtime.RaceReadRange(addr, len)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
func raceWriteRange(addr unsafe.Pointer, len int) {
|
|
29
|
+
runtime.RaceWriteRange(addr, len)
|
|
30
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Copyright 2012 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
"unsafe"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
const raceenabled = false
|
|
14
|
+
|
|
15
|
+
func raceAcquire(addr unsafe.Pointer) {
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
func raceReleaseMerge(addr unsafe.Pointer) {
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
func raceReadRange(addr unsafe.Pointer, len int) {
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
func raceWriteRange(addr unsafe.Pointer, len int) {
|
|
25
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Copyright 2019 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
// ReadDirent reads directory entries from fd and writes them into buf.
|
|
10
|
+
func ReadDirent(fd int, buf []byte) (n int, err error) {
|
|
11
|
+
return Getdents(fd, buf)
|
|
12
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// Copyright 2019 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build darwin || zos
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
import "unsafe"
|
|
10
|
+
|
|
11
|
+
// ReadDirent reads directory entries from fd and writes them into buf.
|
|
12
|
+
func ReadDirent(fd int, buf []byte) (n int, err error) {
|
|
13
|
+
// Final argument is (basep *uintptr) and the syscall doesn't take nil.
|
|
14
|
+
// 64 bits should be enough. (32 bits isn't even on 386). Since the
|
|
15
|
+
// actual system call is getdirentries64, 64 is a good guess.
|
|
16
|
+
// TODO(rsc): Can we use a single global basep for all calls?
|
|
17
|
+
var base = (*uintptr)(unsafe.Pointer(new(uint64)))
|
|
18
|
+
return Getdirentries(fd, buf, base)
|
|
19
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
// Copyright 2026 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build darwin || linux || openbsd
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
import "unsafe"
|
|
10
|
+
|
|
11
|
+
// minIovec is the size of the small initial allocation used by
|
|
12
|
+
// Readv, Writev, etc.
|
|
13
|
+
//
|
|
14
|
+
// This small allocation gets stack allocated, which lets the
|
|
15
|
+
// common use case of len(iovs) <= minIovec avoid more expensive
|
|
16
|
+
// heap allocations.
|
|
17
|
+
const minIovec = 8
|
|
18
|
+
|
|
19
|
+
// appendBytes converts bs to Iovecs and appends them to vecs.
|
|
20
|
+
func appendBytes(vecs []Iovec, bs [][]byte) []Iovec {
|
|
21
|
+
for _, b := range bs {
|
|
22
|
+
var v Iovec
|
|
23
|
+
v.SetLen(len(b))
|
|
24
|
+
if len(b) > 0 {
|
|
25
|
+
v.Base = &b[0]
|
|
26
|
+
} else {
|
|
27
|
+
v.Base = (*byte)(unsafe.Pointer(&_zero))
|
|
28
|
+
}
|
|
29
|
+
vecs = append(vecs, v)
|
|
30
|
+
}
|
|
31
|
+
return vecs
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// writevRaceDetect tells the race detector that the program
|
|
35
|
+
// has read the first n bytes stored in iovecs.
|
|
36
|
+
func writevRaceDetect(iovecs []Iovec, n int) {
|
|
37
|
+
if !raceenabled {
|
|
38
|
+
return
|
|
39
|
+
}
|
|
40
|
+
for i := 0; n > 0 && i < len(iovecs); i++ {
|
|
41
|
+
m := min(int(iovecs[i].Len), n)
|
|
42
|
+
n -= m
|
|
43
|
+
if m > 0 {
|
|
44
|
+
raceReadRange(unsafe.Pointer(iovecs[i].Base), m)
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// readvRaceDetect tells the race detector that the program
|
|
50
|
+
// has written to the first n bytes stored in iovecs.
|
|
51
|
+
func readvRaceDetect(iovecs []Iovec, n int, err error) {
|
|
52
|
+
if !raceenabled {
|
|
53
|
+
return
|
|
54
|
+
}
|
|
55
|
+
for i := 0; n > 0 && i < len(iovecs); i++ {
|
|
56
|
+
m := min(int(iovecs[i].Len), n)
|
|
57
|
+
n -= m
|
|
58
|
+
if m > 0 {
|
|
59
|
+
raceWriteRange(unsafe.Pointer(iovecs[i].Base), m)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if err == nil {
|
|
63
|
+
raceAcquire(unsafe.Pointer(&ioSync))
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
func Readv(fd int, iovs [][]byte) (n int, err error) {
|
|
68
|
+
iovecs := make([]Iovec, 0, minIovec)
|
|
69
|
+
iovecs = appendBytes(iovecs, iovs)
|
|
70
|
+
n, err = readv(fd, iovecs)
|
|
71
|
+
readvRaceDetect(iovecs, n, err)
|
|
72
|
+
return n, err
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {
|
|
76
|
+
iovecs := make([]Iovec, 0, minIovec)
|
|
77
|
+
iovecs = appendBytes(iovecs, iovs)
|
|
78
|
+
n, err = preadv(fd, iovecs, offset)
|
|
79
|
+
readvRaceDetect(iovecs, n, err)
|
|
80
|
+
return n, err
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
func Writev(fd int, iovs [][]byte) (n int, err error) {
|
|
84
|
+
iovecs := make([]Iovec, 0, minIovec)
|
|
85
|
+
iovecs = appendBytes(iovecs, iovs)
|
|
86
|
+
if raceenabled {
|
|
87
|
+
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
|
88
|
+
}
|
|
89
|
+
n, err = writev(fd, iovecs)
|
|
90
|
+
writevRaceDetect(iovecs, n)
|
|
91
|
+
return n, err
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {
|
|
95
|
+
iovecs := make([]Iovec, 0, minIovec)
|
|
96
|
+
iovecs = appendBytes(iovecs, iovs)
|
|
97
|
+
if raceenabled {
|
|
98
|
+
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
|
99
|
+
}
|
|
100
|
+
n, err = pwritev(fd, iovecs, offset)
|
|
101
|
+
writevRaceDetect(iovecs, n)
|
|
102
|
+
return n, err
|
|
103
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright 2019 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
package unix
|
|
6
|
+
|
|
7
|
+
// Round the length of a raw sockaddr up to align it properly.
|
|
8
|
+
func cmsgAlignOf(salen int) int {
|
|
9
|
+
salign := SizeofPtr
|
|
10
|
+
if SizeofPtr == 8 && !supportsABI(_dragonflyABIChangeVersion) {
|
|
11
|
+
// 64-bit Dragonfly before the September 2019 ABI changes still requires
|
|
12
|
+
// 32-bit aligned access to network subsystem.
|
|
13
|
+
salign = 4
|
|
14
|
+
}
|
|
15
|
+
return (salen + salign - 1) & ^(salign - 1)
|
|
16
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// Copyright 2011 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
// Socket control messages
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
import "unsafe"
|
|
10
|
+
|
|
11
|
+
// UnixCredentials encodes credentials into a socket control message
|
|
12
|
+
// for sending to another process. This can be used for
|
|
13
|
+
// authentication.
|
|
14
|
+
func UnixCredentials(ucred *Ucred) []byte {
|
|
15
|
+
b := make([]byte, CmsgSpace(SizeofUcred))
|
|
16
|
+
h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
|
|
17
|
+
h.Level = SOL_SOCKET
|
|
18
|
+
h.Type = SCM_CREDENTIALS
|
|
19
|
+
h.SetLen(CmsgLen(SizeofUcred))
|
|
20
|
+
*(*Ucred)(h.data(0)) = *ucred
|
|
21
|
+
return b
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
// ParseUnixCredentials decodes a socket control message that contains
|
|
25
|
+
// credentials in a Ucred structure. To receive such a message, the
|
|
26
|
+
// SO_PASSCRED option must be enabled on the socket.
|
|
27
|
+
func ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {
|
|
28
|
+
if m.Header.Level != SOL_SOCKET {
|
|
29
|
+
return nil, EINVAL
|
|
30
|
+
}
|
|
31
|
+
if m.Header.Type != SCM_CREDENTIALS {
|
|
32
|
+
return nil, EINVAL
|
|
33
|
+
}
|
|
34
|
+
ucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))
|
|
35
|
+
return &ucred, nil
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.
|
|
39
|
+
func PktInfo4(info *Inet4Pktinfo) []byte {
|
|
40
|
+
b := make([]byte, CmsgSpace(SizeofInet4Pktinfo))
|
|
41
|
+
h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
|
|
42
|
+
h.Level = SOL_IP
|
|
43
|
+
h.Type = IP_PKTINFO
|
|
44
|
+
h.SetLen(CmsgLen(SizeofInet4Pktinfo))
|
|
45
|
+
*(*Inet4Pktinfo)(h.data(0)) = *info
|
|
46
|
+
return b
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.
|
|
50
|
+
func PktInfo6(info *Inet6Pktinfo) []byte {
|
|
51
|
+
b := make([]byte, CmsgSpace(SizeofInet6Pktinfo))
|
|
52
|
+
h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
|
|
53
|
+
h.Level = SOL_IPV6
|
|
54
|
+
h.Type = IPV6_PKTINFO
|
|
55
|
+
h.SetLen(CmsgLen(SizeofInet6Pktinfo))
|
|
56
|
+
*(*Inet6Pktinfo)(h.data(0)) = *info
|
|
57
|
+
return b
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// ParseOrigDstAddr decodes a socket control message containing the original
|
|
61
|
+
// destination address. To receive such a message the IP_RECVORIGDSTADDR or
|
|
62
|
+
// IPV6_RECVORIGDSTADDR option must be enabled on the socket.
|
|
63
|
+
func ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) {
|
|
64
|
+
switch {
|
|
65
|
+
case m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR:
|
|
66
|
+
pp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0]))
|
|
67
|
+
sa := new(SockaddrInet4)
|
|
68
|
+
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
|
69
|
+
sa.Port = int(p[0])<<8 + int(p[1])
|
|
70
|
+
sa.Addr = pp.Addr
|
|
71
|
+
return sa, nil
|
|
72
|
+
|
|
73
|
+
case m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR:
|
|
74
|
+
pp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0]))
|
|
75
|
+
sa := new(SockaddrInet6)
|
|
76
|
+
p := (*[2]byte)(unsafe.Pointer(&pp.Port))
|
|
77
|
+
sa.Port = int(p[0])<<8 + int(p[1])
|
|
78
|
+
sa.ZoneId = pp.Scope_id
|
|
79
|
+
sa.Addr = pp.Addr
|
|
80
|
+
return sa, nil
|
|
81
|
+
|
|
82
|
+
default:
|
|
83
|
+
return nil, EINVAL
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
// Copyright 2011 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos
|
|
6
|
+
|
|
7
|
+
// Socket control messages
|
|
8
|
+
|
|
9
|
+
package unix
|
|
10
|
+
|
|
11
|
+
import (
|
|
12
|
+
"unsafe"
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
// CmsgLen returns the value to store in the Len field of the Cmsghdr
|
|
16
|
+
// structure, taking into account any necessary alignment.
|
|
17
|
+
func CmsgLen(datalen int) int {
|
|
18
|
+
return cmsgAlignOf(SizeofCmsghdr) + datalen
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// CmsgSpace returns the number of bytes an ancillary element with
|
|
22
|
+
// payload of the passed data length occupies.
|
|
23
|
+
func CmsgSpace(datalen int) int {
|
|
24
|
+
return cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
func (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {
|
|
28
|
+
return unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
// SocketControlMessage represents a socket control message.
|
|
32
|
+
type SocketControlMessage struct {
|
|
33
|
+
Header Cmsghdr
|
|
34
|
+
Data []byte
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// ParseSocketControlMessage parses b as an array of socket control
|
|
38
|
+
// messages.
|
|
39
|
+
func ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {
|
|
40
|
+
var msgs []SocketControlMessage
|
|
41
|
+
i := 0
|
|
42
|
+
for i+CmsgLen(0) <= len(b) {
|
|
43
|
+
h, dbuf, err := socketControlMessageHeaderAndData(b[i:])
|
|
44
|
+
if err != nil {
|
|
45
|
+
return nil, err
|
|
46
|
+
}
|
|
47
|
+
m := SocketControlMessage{Header: *h, Data: dbuf}
|
|
48
|
+
msgs = append(msgs, m)
|
|
49
|
+
i += cmsgAlignOf(int(h.Len))
|
|
50
|
+
}
|
|
51
|
+
return msgs, nil
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header,
|
|
55
|
+
// message data (a slice of b), and the remainder of b after that single message.
|
|
56
|
+
// When there are no remaining messages, len(remainder) == 0.
|
|
57
|
+
func ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) {
|
|
58
|
+
h, dbuf, err := socketControlMessageHeaderAndData(b)
|
|
59
|
+
if err != nil {
|
|
60
|
+
return Cmsghdr{}, nil, nil, err
|
|
61
|
+
}
|
|
62
|
+
if i := cmsgAlignOf(int(h.Len)); i < len(b) {
|
|
63
|
+
remainder = b[i:]
|
|
64
|
+
}
|
|
65
|
+
return *h, dbuf, remainder, nil
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
func socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {
|
|
69
|
+
h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
|
|
70
|
+
if h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {
|
|
71
|
+
return nil, nil, EINVAL
|
|
72
|
+
}
|
|
73
|
+
return h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// UnixRights encodes a set of open file descriptors into a socket
|
|
77
|
+
// control message for sending to another process.
|
|
78
|
+
func UnixRights(fds ...int) []byte {
|
|
79
|
+
datalen := len(fds) * 4
|
|
80
|
+
b := make([]byte, CmsgSpace(datalen))
|
|
81
|
+
h := (*Cmsghdr)(unsafe.Pointer(&b[0]))
|
|
82
|
+
h.Level = SOL_SOCKET
|
|
83
|
+
h.Type = SCM_RIGHTS
|
|
84
|
+
h.SetLen(CmsgLen(datalen))
|
|
85
|
+
for i, fd := range fds {
|
|
86
|
+
*(*int32)(h.data(4 * uintptr(i))) = int32(fd)
|
|
87
|
+
}
|
|
88
|
+
return b
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// ParseUnixRights decodes a socket control message that contains an
|
|
92
|
+
// integer array of open file descriptors from another process.
|
|
93
|
+
func ParseUnixRights(m *SocketControlMessage) ([]int, error) {
|
|
94
|
+
if m.Header.Level != SOL_SOCKET {
|
|
95
|
+
return nil, EINVAL
|
|
96
|
+
}
|
|
97
|
+
if m.Header.Type != SCM_RIGHTS {
|
|
98
|
+
return nil, EINVAL
|
|
99
|
+
}
|
|
100
|
+
fds := make([]int, len(m.Data)>>2)
|
|
101
|
+
for i, j := 0, 0; i < len(m.Data); i += 4 {
|
|
102
|
+
fds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))
|
|
103
|
+
j++
|
|
104
|
+
}
|
|
105
|
+
return fds, nil
|
|
106
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Copyright 2019 The Go Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style
|
|
3
|
+
// license that can be found in the LICENSE file.
|
|
4
|
+
|
|
5
|
+
//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos
|
|
6
|
+
|
|
7
|
+
package unix
|
|
8
|
+
|
|
9
|
+
import (
|
|
10
|
+
"runtime"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
// Round the length of a raw sockaddr up to align it properly.
|
|
14
|
+
func cmsgAlignOf(salen int) int {
|
|
15
|
+
salign := SizeofPtr
|
|
16
|
+
|
|
17
|
+
// dragonfly needs to check ABI version at runtime, see cmsgAlignOf in
|
|
18
|
+
// sockcmsg_dragonfly.go
|
|
19
|
+
switch runtime.GOOS {
|
|
20
|
+
case "aix":
|
|
21
|
+
// There is no alignment on AIX.
|
|
22
|
+
salign = 1
|
|
23
|
+
case "darwin", "ios", "illumos", "solaris":
|
|
24
|
+
// NOTE: It seems like 64-bit Darwin, Illumos and Solaris
|
|
25
|
+
// kernels still require 32-bit aligned access to network
|
|
26
|
+
// subsystem.
|
|
27
|
+
if SizeofPtr == 8 {
|
|
28
|
+
salign = 4
|
|
29
|
+
}
|
|
30
|
+
case "netbsd", "openbsd":
|
|
31
|
+
// NetBSD and OpenBSD armv7 require 64-bit alignment.
|
|
32
|
+
if runtime.GOARCH == "arm" {
|
|
33
|
+
salign = 8
|
|
34
|
+
}
|
|
35
|
+
// NetBSD aarch64 requires 128-bit alignment.
|
|
36
|
+
if runtime.GOOS == "netbsd" && runtime.GOARCH == "arm64" {
|
|
37
|
+
salign = 16
|
|
38
|
+
}
|
|
39
|
+
case "zos":
|
|
40
|
+
// z/OS socket macros use [32-bit] sizeof(int) alignment,
|
|
41
|
+
// not pointer width.
|
|
42
|
+
salign = SizeofInt
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return (salen + salign - 1) & ^(salign - 1)
|
|
46
|
+
}
|