slidge-whatsapp 0.2.2__cp312-cp312-manylinux_2_36_aarch64.whl → 0.2.6__cp312-cp312-manylinux_2_36_aarch64.whl

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.

Potentially problematic release.


This version of slidge-whatsapp might be problematic. Click here for more details.

Files changed (1250) hide show
  1. slidge_whatsapp/__init__.py +26 -8
  2. slidge_whatsapp/__main__.py +3 -0
  3. slidge_whatsapp/config.py +3 -0
  4. slidge_whatsapp/contact.py +1 -1
  5. slidge_whatsapp/event.go +79 -24
  6. slidge_whatsapp/gateway.go +13 -9
  7. slidge_whatsapp/gateway.py +2 -2
  8. slidge_whatsapp/generated/_whatsapp.cpython-312-aarch64-linux-gnu.h +188 -151
  9. slidge_whatsapp/generated/_whatsapp.cpython-312-aarch64-linux-gnu.so +0 -0
  10. slidge_whatsapp/generated/build.py +156 -131
  11. slidge_whatsapp/generated/go.py +1 -1
  12. slidge_whatsapp/generated/whatsapp.c +1770 -1299
  13. slidge_whatsapp/generated/whatsapp.go +1275 -1030
  14. slidge_whatsapp/generated/whatsapp.py +1262 -942
  15. slidge_whatsapp/generated/whatsapp_go.h +188 -151
  16. slidge_whatsapp/go.mod +18 -13
  17. slidge_whatsapp/go.sum +41 -29
  18. slidge_whatsapp/group.py +7 -2
  19. slidge_whatsapp/media/__init__.py +0 -0
  20. slidge_whatsapp/media/media.go +24 -13
  21. slidge_whatsapp/session.go +77 -71
  22. slidge_whatsapp/session.py +53 -31
  23. slidge_whatsapp/vendor/filippo.io/edwards25519/LICENSE +27 -0
  24. slidge_whatsapp/vendor/filippo.io/edwards25519/README.md +14 -0
  25. slidge_whatsapp/vendor/filippo.io/edwards25519/doc.go +20 -0
  26. slidge_whatsapp/vendor/filippo.io/edwards25519/edwards25519.go +427 -0
  27. slidge_whatsapp/vendor/filippo.io/edwards25519/extra.go +349 -0
  28. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe.go +420 -0
  29. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_amd64.go +16 -0
  30. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_amd64.s +379 -0
  31. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_amd64_noasm.go +12 -0
  32. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_arm64.go +16 -0
  33. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_arm64.s +42 -0
  34. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_arm64_noasm.go +12 -0
  35. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_extra.go +50 -0
  36. slidge_whatsapp/vendor/filippo.io/edwards25519/field/fe_generic.go +266 -0
  37. slidge_whatsapp/vendor/filippo.io/edwards25519/scalar.go +343 -0
  38. slidge_whatsapp/vendor/filippo.io/edwards25519/scalar_fiat.go +1147 -0
  39. slidge_whatsapp/vendor/filippo.io/edwards25519/scalarmult.go +214 -0
  40. slidge_whatsapp/vendor/filippo.io/edwards25519/tables.go +129 -0
  41. slidge_whatsapp/vendor/github.com/ebitengine/purego/.gitignore +1 -0
  42. slidge_whatsapp/vendor/github.com/ebitengine/purego/LICENSE +201 -0
  43. slidge_whatsapp/vendor/github.com/ebitengine/purego/README.md +97 -0
  44. slidge_whatsapp/vendor/github.com/ebitengine/purego/abi_amd64.h +99 -0
  45. slidge_whatsapp/vendor/github.com/ebitengine/purego/abi_arm64.h +39 -0
  46. slidge_whatsapp/vendor/github.com/ebitengine/purego/cgo.go +19 -0
  47. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlerror.go +17 -0
  48. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn.go +99 -0
  49. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_android.go +34 -0
  50. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_darwin.go +19 -0
  51. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_freebsd.go +14 -0
  52. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_linux.go +16 -0
  53. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_nocgo_freebsd.go +11 -0
  54. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_nocgo_linux.go +19 -0
  55. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_playground.go +24 -0
  56. slidge_whatsapp/vendor/github.com/ebitengine/purego/dlfcn_stubs.s +26 -0
  57. slidge_whatsapp/vendor/github.com/ebitengine/purego/func.go +436 -0
  58. slidge_whatsapp/vendor/github.com/ebitengine/purego/go_runtime.go +13 -0
  59. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/cgo/dlfcn_cgo_unix.go +56 -0
  60. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/cgo/empty.go +6 -0
  61. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/cgo/syscall_cgo_unix.go +55 -0
  62. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/abi_amd64.h +99 -0
  63. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/abi_arm64.h +39 -0
  64. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/asm_amd64.s +39 -0
  65. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/asm_arm64.s +36 -0
  66. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/callbacks.go +93 -0
  67. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/doc.go +32 -0
  68. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/freebsd.go +27 -0
  69. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_darwin_amd64.go +73 -0
  70. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_darwin_arm64.go +88 -0
  71. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_freebsd_amd64.go +95 -0
  72. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_freebsd_arm64.go +98 -0
  73. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_libinit.go +72 -0
  74. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_linux_amd64.go +95 -0
  75. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_linux_arm64.go +98 -0
  76. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_setenv.go +18 -0
  77. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/go_util.go +37 -0
  78. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/iscgo.go +19 -0
  79. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/libcgo.go +39 -0
  80. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/libcgo_darwin.go +22 -0
  81. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/libcgo_freebsd.go +16 -0
  82. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/libcgo_linux.go +16 -0
  83. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/setenv.go +19 -0
  84. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols.go +221 -0
  85. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols_darwin.go +29 -0
  86. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols_freebsd.go +29 -0
  87. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/symbols_linux.go +29 -0
  88. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_amd64.s +104 -0
  89. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_arm64.s +72 -0
  90. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/fakecgo/trampolines_stubs.s +90 -0
  91. slidge_whatsapp/vendor/github.com/ebitengine/purego/internal/strings/strings.go +40 -0
  92. slidge_whatsapp/vendor/github.com/ebitengine/purego/is_ios.go +13 -0
  93. slidge_whatsapp/vendor/github.com/ebitengine/purego/nocgo.go +25 -0
  94. slidge_whatsapp/vendor/github.com/ebitengine/purego/struct_amd64.go +260 -0
  95. slidge_whatsapp/vendor/github.com/ebitengine/purego/struct_arm64.go +274 -0
  96. slidge_whatsapp/vendor/github.com/ebitengine/purego/struct_other.go +16 -0
  97. slidge_whatsapp/vendor/github.com/ebitengine/purego/sys_amd64.s +164 -0
  98. slidge_whatsapp/vendor/github.com/ebitengine/purego/sys_arm64.s +92 -0
  99. slidge_whatsapp/vendor/github.com/ebitengine/purego/sys_unix_arm64.s +70 -0
  100. slidge_whatsapp/vendor/github.com/ebitengine/purego/syscall.go +53 -0
  101. slidge_whatsapp/vendor/github.com/ebitengine/purego/syscall_cgo_linux.go +21 -0
  102. slidge_whatsapp/vendor/github.com/ebitengine/purego/syscall_sysv.go +223 -0
  103. slidge_whatsapp/vendor/github.com/ebitengine/purego/syscall_windows.go +46 -0
  104. slidge_whatsapp/vendor/github.com/ebitengine/purego/zcallback_amd64.s +2014 -0
  105. slidge_whatsapp/vendor/github.com/ebitengine/purego/zcallback_arm64.s +4014 -0
  106. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/.gitattributes +6 -0
  107. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/AUTHORS +1 -0
  108. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/COPYING +661 -0
  109. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/README.md +71 -0
  110. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz.go +66 -0
  111. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_cgo.go +596 -0
  112. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_cgo_cgo.go +18 -0
  113. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_cgo_extlib.go +11 -0
  114. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_cgo_extlib_pkgconfig.go +9 -0
  115. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_content_types.go +383 -0
  116. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_nocgo.go +1098 -0
  117. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/fitz_vendor.go +9 -0
  118. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/archive.h +444 -0
  119. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/band-writer.h +117 -0
  120. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/bidi.h +90 -0
  121. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/bitmap.h +175 -0
  122. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/buffer.h +250 -0
  123. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/color.h +427 -0
  124. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/compress.h +88 -0
  125. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/compressed-buffer.h +185 -0
  126. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/config.h +222 -0
  127. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/context.h +1006 -0
  128. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/crypt.h +270 -0
  129. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/device.h +654 -0
  130. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/display-list.h +142 -0
  131. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/document.h +1108 -0
  132. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/export.h +52 -0
  133. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/filter.h +263 -0
  134. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/font.h +815 -0
  135. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/geometry.h +818 -0
  136. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/getopt.h +128 -0
  137. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/glyph-cache.h +96 -0
  138. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/glyph.h +81 -0
  139. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/hash.h +126 -0
  140. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/heap-imp.h +163 -0
  141. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/heap.h +140 -0
  142. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/image.h +443 -0
  143. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/link.h +130 -0
  144. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/log.h +61 -0
  145. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/outline.h +228 -0
  146. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/output-svg.h +64 -0
  147. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/output.h +415 -0
  148. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/path.h +447 -0
  149. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/pixmap.h +501 -0
  150. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/pool.h +68 -0
  151. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/separation.h +138 -0
  152. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/shade.h +233 -0
  153. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/store.h +456 -0
  154. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/story-writer.h +209 -0
  155. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/story.h +232 -0
  156. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/stream.h +646 -0
  157. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/string-util.h +286 -0
  158. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/structured-text.h +365 -0
  159. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/system.h +459 -0
  160. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/text.h +209 -0
  161. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/track-usage.h +57 -0
  162. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/transition.h +76 -0
  163. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/tree.h +62 -0
  164. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/types.h +41 -0
  165. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/util.h +151 -0
  166. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/vendor.go +3 -0
  167. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/version.h +31 -0
  168. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/write-pixmap.h +499 -0
  169. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/writer.h +266 -0
  170. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz/xml.h +397 -0
  171. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/fitz.h +97 -0
  172. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/memento.h +423 -0
  173. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/include/mupdf/vendor.go +3 -0
  174. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/libs/libmupdf_linux_arm64.a +0 -0
  175. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/libs/libmupdfthird_linux_arm64.a +0 -0
  176. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/libs/vendor.go +3 -0
  177. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_darwin.go +23 -0
  178. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_linux.go +22 -0
  179. slidge_whatsapp/vendor/github.com/gen2brain/go-fitz/purego_windows.go +22 -0
  180. slidge_whatsapp/vendor/github.com/go-python/gopy/LICENSE +23 -0
  181. slidge_whatsapp/vendor/github.com/go-python/gopy/gopyh/handle.go +210 -0
  182. slidge_whatsapp/vendor/github.com/google/uuid/CHANGELOG.md +41 -0
  183. slidge_whatsapp/vendor/github.com/google/uuid/CONTRIBUTING.md +26 -0
  184. slidge_whatsapp/vendor/github.com/google/uuid/CONTRIBUTORS +9 -0
  185. slidge_whatsapp/vendor/github.com/google/uuid/LICENSE +27 -0
  186. slidge_whatsapp/vendor/github.com/google/uuid/README.md +21 -0
  187. slidge_whatsapp/vendor/github.com/google/uuid/dce.go +80 -0
  188. slidge_whatsapp/vendor/github.com/google/uuid/doc.go +12 -0
  189. slidge_whatsapp/vendor/github.com/google/uuid/hash.go +59 -0
  190. slidge_whatsapp/vendor/github.com/google/uuid/marshal.go +38 -0
  191. slidge_whatsapp/vendor/github.com/google/uuid/node.go +90 -0
  192. slidge_whatsapp/vendor/github.com/google/uuid/node_js.go +12 -0
  193. slidge_whatsapp/vendor/github.com/google/uuid/node_net.go +33 -0
  194. slidge_whatsapp/vendor/github.com/google/uuid/null.go +118 -0
  195. slidge_whatsapp/vendor/github.com/google/uuid/sql.go +59 -0
  196. slidge_whatsapp/vendor/github.com/google/uuid/time.go +134 -0
  197. slidge_whatsapp/vendor/github.com/google/uuid/util.go +43 -0
  198. slidge_whatsapp/vendor/github.com/google/uuid/uuid.go +365 -0
  199. slidge_whatsapp/vendor/github.com/google/uuid/version1.go +44 -0
  200. slidge_whatsapp/vendor/github.com/google/uuid/version4.go +76 -0
  201. slidge_whatsapp/vendor/github.com/google/uuid/version6.go +56 -0
  202. slidge_whatsapp/vendor/github.com/google/uuid/version7.go +104 -0
  203. slidge_whatsapp/vendor/github.com/gorilla/websocket/.gitignore +25 -0
  204. slidge_whatsapp/vendor/github.com/gorilla/websocket/AUTHORS +9 -0
  205. slidge_whatsapp/vendor/github.com/gorilla/websocket/LICENSE +22 -0
  206. slidge_whatsapp/vendor/github.com/gorilla/websocket/README.md +33 -0
  207. slidge_whatsapp/vendor/github.com/gorilla/websocket/client.go +434 -0
  208. slidge_whatsapp/vendor/github.com/gorilla/websocket/compression.go +148 -0
  209. slidge_whatsapp/vendor/github.com/gorilla/websocket/conn.go +1238 -0
  210. slidge_whatsapp/vendor/github.com/gorilla/websocket/doc.go +227 -0
  211. slidge_whatsapp/vendor/github.com/gorilla/websocket/join.go +42 -0
  212. slidge_whatsapp/vendor/github.com/gorilla/websocket/json.go +60 -0
  213. slidge_whatsapp/vendor/github.com/gorilla/websocket/mask.go +55 -0
  214. slidge_whatsapp/vendor/github.com/gorilla/websocket/mask_safe.go +16 -0
  215. slidge_whatsapp/vendor/github.com/gorilla/websocket/prepared.go +102 -0
  216. slidge_whatsapp/vendor/github.com/gorilla/websocket/proxy.go +77 -0
  217. slidge_whatsapp/vendor/github.com/gorilla/websocket/server.go +365 -0
  218. slidge_whatsapp/vendor/github.com/gorilla/websocket/tls_handshake.go +21 -0
  219. slidge_whatsapp/vendor/github.com/gorilla/websocket/tls_handshake_116.go +21 -0
  220. slidge_whatsapp/vendor/github.com/gorilla/websocket/util.go +298 -0
  221. slidge_whatsapp/vendor/github.com/gorilla/websocket/x_net_proxy.go +473 -0
  222. slidge_whatsapp/vendor/github.com/h2non/filetype/.editorconfig +12 -0
  223. slidge_whatsapp/vendor/github.com/h2non/filetype/.gitignore +2 -0
  224. slidge_whatsapp/vendor/github.com/h2non/filetype/.travis.yml +16 -0
  225. slidge_whatsapp/vendor/github.com/h2non/filetype/History.md +163 -0
  226. slidge_whatsapp/vendor/github.com/h2non/filetype/LICENSE +24 -0
  227. slidge_whatsapp/vendor/github.com/h2non/filetype/README.md +294 -0
  228. slidge_whatsapp/vendor/github.com/h2non/filetype/filetype.go +102 -0
  229. slidge_whatsapp/vendor/github.com/h2non/filetype/kind.go +91 -0
  230. slidge_whatsapp/vendor/github.com/h2non/filetype/match.go +90 -0
  231. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/application.go +43 -0
  232. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/archive.go +211 -0
  233. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/audio.go +85 -0
  234. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/document.go +197 -0
  235. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/font.go +45 -0
  236. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/image.go +143 -0
  237. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/isobmff/isobmff.go +37 -0
  238. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/matchers.go +51 -0
  239. slidge_whatsapp/vendor/github.com/h2non/filetype/matchers/video.go +145 -0
  240. slidge_whatsapp/vendor/github.com/h2non/filetype/types/defaults.go +4 -0
  241. slidge_whatsapp/vendor/github.com/h2non/filetype/types/mime.go +14 -0
  242. slidge_whatsapp/vendor/github.com/h2non/filetype/types/split.go +11 -0
  243. slidge_whatsapp/vendor/github.com/h2non/filetype/types/type.go +16 -0
  244. slidge_whatsapp/vendor/github.com/h2non/filetype/types/types.go +23 -0
  245. slidge_whatsapp/vendor/github.com/h2non/filetype/version.go +4 -0
  246. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/.gitignore +21 -0
  247. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/CHANGELOG.md +69 -0
  248. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/COPYRIGHT.txt +147 -0
  249. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/LICENSE +21 -0
  250. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/README.md +162 -0
  251. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi.go +7 -0
  252. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/abi_amd64.go +7 -0
  253. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/ffi.go +272 -0
  254. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/fun.go +54 -0
  255. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/init.go +55 -0
  256. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib.go +82 -0
  257. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_unix.go +63 -0
  258. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/lib_windows.go +68 -0
  259. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/tramp_amd64.go +5 -0
  260. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/tramp_arm64.go +5 -0
  261. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/tramp_darwin_arm64.go +5 -0
  262. slidge_whatsapp/vendor/github.com/jupiterrider/ffi/types.go +34 -0
  263. slidge_whatsapp/vendor/github.com/mattn/go-colorable/LICENSE +21 -0
  264. slidge_whatsapp/vendor/github.com/mattn/go-colorable/README.md +48 -0
  265. slidge_whatsapp/vendor/github.com/mattn/go-colorable/colorable_others.go +38 -0
  266. slidge_whatsapp/vendor/github.com/mattn/go-colorable/colorable_windows.go +1047 -0
  267. slidge_whatsapp/vendor/github.com/mattn/go-colorable/go.test.sh +12 -0
  268. slidge_whatsapp/vendor/github.com/mattn/go-colorable/noncolorable.go +57 -0
  269. slidge_whatsapp/vendor/github.com/mattn/go-isatty/LICENSE +9 -0
  270. slidge_whatsapp/vendor/github.com/mattn/go-isatty/README.md +50 -0
  271. slidge_whatsapp/vendor/github.com/mattn/go-isatty/doc.go +2 -0
  272. slidge_whatsapp/vendor/github.com/mattn/go-isatty/go.test.sh +12 -0
  273. slidge_whatsapp/vendor/github.com/mattn/go-isatty/isatty_bsd.go +20 -0
  274. slidge_whatsapp/vendor/github.com/mattn/go-isatty/isatty_others.go +17 -0
  275. slidge_whatsapp/vendor/github.com/mattn/go-isatty/isatty_plan9.go +23 -0
  276. slidge_whatsapp/vendor/github.com/mattn/go-isatty/isatty_solaris.go +21 -0
  277. slidge_whatsapp/vendor/github.com/mattn/go-isatty/isatty_tcgets.go +20 -0
  278. slidge_whatsapp/vendor/github.com/mattn/go-isatty/isatty_windows.go +125 -0
  279. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/.codecov.yml +4 -0
  280. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/.gitignore +14 -0
  281. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/LICENSE +21 -0
  282. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/README.md +598 -0
  283. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/backup.go +85 -0
  284. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/callback.go +412 -0
  285. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/convert.go +299 -0
  286. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/doc.go +134 -0
  287. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/error.go +150 -0
  288. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c +261459 -0
  289. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h +13720 -0
  290. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3.go +2315 -0
  291. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_context.go +103 -0
  292. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go +120 -0
  293. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go +54 -0
  294. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go +23 -0
  295. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go +85 -0
  296. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension_omit.go +25 -0
  297. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go +16 -0
  298. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go +16 -0
  299. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_column_metadata.go +22 -0
  300. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go +16 -0
  301. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_fts5.go +15 -0
  302. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_icu.go +20 -0
  303. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go +16 -0
  304. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_math_functions.go +15 -0
  305. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_os_trace.go +15 -0
  306. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate.go +21 -0
  307. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_hook.go +113 -0
  308. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_preupdate_omit.go +22 -0
  309. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go +16 -0
  310. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go +16 -0
  311. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize.go +83 -0
  312. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_serialize_omit.go +21 -0
  313. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go +16 -0
  314. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c +89 -0
  315. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go +97 -0
  316. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go +295 -0
  317. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go +158 -0
  318. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go +16 -0
  319. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go +16 -0
  320. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vtable.go +721 -0
  321. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_other.go +18 -0
  322. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go +15 -0
  323. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go +288 -0
  324. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_type.go +108 -0
  325. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go +42 -0
  326. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go +18 -0
  327. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/sqlite3ext.h +728 -0
  328. slidge_whatsapp/vendor/github.com/mattn/go-sqlite3/static_mock.go +38 -0
  329. slidge_whatsapp/vendor/github.com/petermattis/goid/.gitignore +4 -0
  330. slidge_whatsapp/vendor/github.com/petermattis/goid/LICENSE +202 -0
  331. slidge_whatsapp/vendor/github.com/petermattis/goid/README.md +4 -0
  332. slidge_whatsapp/vendor/github.com/petermattis/goid/goid.go +35 -0
  333. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_gccgo.go +26 -0
  334. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.c +23 -0
  335. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.3.go +22 -0
  336. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.go +35 -0
  337. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.4.s +18 -0
  338. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.go +28 -0
  339. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_go1.5.s +44 -0
  340. slidge_whatsapp/vendor/github.com/petermattis/goid/goid_slow.go +24 -0
  341. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_gccgo_go1.8.go +17 -0
  342. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.23.go +38 -0
  343. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.5.go +57 -0
  344. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.6.go +43 -0
  345. slidge_whatsapp/vendor/github.com/petermattis/goid/runtime_go1.9.go +37 -0
  346. slidge_whatsapp/vendor/github.com/rs/zerolog/.gitignore +25 -0
  347. slidge_whatsapp/vendor/github.com/rs/zerolog/CONTRIBUTING.md +43 -0
  348. slidge_whatsapp/vendor/github.com/rs/zerolog/LICENSE +21 -0
  349. slidge_whatsapp/vendor/github.com/rs/zerolog/README.md +813 -0
  350. slidge_whatsapp/vendor/github.com/rs/zerolog/array.go +240 -0
  351. slidge_whatsapp/vendor/github.com/rs/zerolog/console.go +535 -0
  352. slidge_whatsapp/vendor/github.com/rs/zerolog/context.go +480 -0
  353. slidge_whatsapp/vendor/github.com/rs/zerolog/ctx.go +52 -0
  354. slidge_whatsapp/vendor/github.com/rs/zerolog/encoder.go +56 -0
  355. slidge_whatsapp/vendor/github.com/rs/zerolog/encoder_cbor.go +45 -0
  356. slidge_whatsapp/vendor/github.com/rs/zerolog/encoder_json.go +51 -0
  357. slidge_whatsapp/vendor/github.com/rs/zerolog/event.go +830 -0
  358. slidge_whatsapp/vendor/github.com/rs/zerolog/example.jsonl +7 -0
  359. slidge_whatsapp/vendor/github.com/rs/zerolog/fields.go +292 -0
  360. slidge_whatsapp/vendor/github.com/rs/zerolog/globals.go +190 -0
  361. slidge_whatsapp/vendor/github.com/rs/zerolog/go112.go +7 -0
  362. slidge_whatsapp/vendor/github.com/rs/zerolog/hook.go +64 -0
  363. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/cbor/README.md +56 -0
  364. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/cbor/base.go +19 -0
  365. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/cbor/cbor.go +102 -0
  366. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/cbor/decode_stream.go +654 -0
  367. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/cbor/string.go +117 -0
  368. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/cbor/time.go +93 -0
  369. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/cbor/types.go +486 -0
  370. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/json/base.go +19 -0
  371. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/json/bytes.go +85 -0
  372. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/json/string.go +149 -0
  373. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/json/time.go +113 -0
  374. slidge_whatsapp/vendor/github.com/rs/zerolog/internal/json/types.go +435 -0
  375. slidge_whatsapp/vendor/github.com/rs/zerolog/log/log.go +131 -0
  376. slidge_whatsapp/vendor/github.com/rs/zerolog/log.go +518 -0
  377. slidge_whatsapp/vendor/github.com/rs/zerolog/not_go112.go +5 -0
  378. slidge_whatsapp/vendor/github.com/rs/zerolog/pretty.png +0 -0
  379. slidge_whatsapp/vendor/github.com/rs/zerolog/sampler.go +137 -0
  380. slidge_whatsapp/vendor/github.com/rs/zerolog/syslog.go +89 -0
  381. slidge_whatsapp/vendor/github.com/rs/zerolog/writer.go +355 -0
  382. slidge_whatsapp/vendor/go.mau.fi/libsignal/LICENSE +674 -0
  383. slidge_whatsapp/vendor/go.mau.fi/libsignal/cipher/Cbc.go +101 -0
  384. slidge_whatsapp/vendor/go.mau.fi/libsignal/cipher/Cipher.go +105 -0
  385. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/Curve.go +109 -0
  386. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/DjbECPublicKey.go +29 -0
  387. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/DkbECPrivateKey.go +29 -0
  388. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/Doc.go +3 -0
  389. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/ECKeyPair.go +27 -0
  390. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/ECPrivateKey.go +7 -0
  391. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/ECPublicKey.go +11 -0
  392. slidge_whatsapp/vendor/go.mau.fi/libsignal/ecc/SignCurve25519.go +97 -0
  393. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupCipher.go +152 -0
  394. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/GroupSessionBuilder.go +94 -0
  395. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/ratchet/Doc.go +3 -0
  396. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/ratchet/SenderChainKey.go +68 -0
  397. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/ratchet/SenderMessageKey.go +89 -0
  398. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/record/Doc.go +2 -0
  399. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/record/SenderKeyRecord.go +149 -0
  400. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/record/SenderKeyState.go +186 -0
  401. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/Doc.go +3 -0
  402. slidge_whatsapp/vendor/go.mau.fi/libsignal/groups/state/store/SenderKeyStore.go +13 -0
  403. slidge_whatsapp/vendor/go.mau.fi/libsignal/kdf/HKDF.go +47 -0
  404. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/chain/ChainKey.go +128 -0
  405. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKey.go +48 -0
  406. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/identity/IdentityKeyPair.go +39 -0
  407. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/message/MessageKey.go +91 -0
  408. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/prekey/PreKeyBundle.go +86 -0
  409. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/root/RootKey.go +66 -0
  410. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/session/DerivedSecrets.go +29 -0
  411. slidge_whatsapp/vendor/go.mau.fi/libsignal/keys/session/Pair.go +43 -0
  412. slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/DefaultLogger.go +85 -0
  413. slidge_whatsapp/vendor/go.mau.fi/libsignal/logger/Logger.go +89 -0
  414. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/CiphertextMessage.go +19 -0
  415. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/Doc.go +3 -0
  416. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/PreKeySignalMessage.go +152 -0
  417. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/SenderKeyDistributionMessage.go +147 -0
  418. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/SenderKeyMessage.go +168 -0
  419. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/SenderKeyName.go +25 -0
  420. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/SignalMessage.go +226 -0
  421. slidge_whatsapp/vendor/go.mau.fi/libsignal/protocol/SignalProtocolAddress.go +38 -0
  422. slidge_whatsapp/vendor/go.mau.fi/libsignal/ratchet/Ratchet.go +197 -0
  423. slidge_whatsapp/vendor/go.mau.fi/libsignal/ratchet/ReceiverParameters.go +106 -0
  424. slidge_whatsapp/vendor/go.mau.fi/libsignal/ratchet/SenderParameters.go +106 -0
  425. slidge_whatsapp/vendor/go.mau.fi/libsignal/ratchet/SymmetricParameters.go +18 -0
  426. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.pb.go +246 -0
  427. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/FingerprintProtocol.proto +14 -0
  428. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/JSONSerializer.go +303 -0
  429. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.pb.go +1501 -0
  430. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/LocalStorageProtocol.proto +114 -0
  431. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/ProtoBufferSerializer.go +262 -0
  432. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/Serializer.go +31 -0
  433. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.pb.go +641 -0
  434. slidge_whatsapp/vendor/go.mau.fi/libsignal/serialize/WhisperTextProtocol.proto +45 -0
  435. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/Session.go +299 -0
  436. slidge_whatsapp/vendor/go.mau.fi/libsignal/session/SessionCipher.go +409 -0
  437. slidge_whatsapp/vendor/go.mau.fi/libsignal/signalerror/errors.go +37 -0
  438. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/ChainState.go +157 -0
  439. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/Doc.go +3 -0
  440. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/PendingKeyExchangeState.go +91 -0
  441. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/PendingPreKeyState.go +62 -0
  442. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/PreKeyRecord.go +90 -0
  443. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/SessionRecord.go +197 -0
  444. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/SessionState.go +531 -0
  445. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/SignedPreKeyRecord.go +112 -0
  446. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/record/UnacknowledgedPreKey.go +69 -0
  447. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/Doc.go +3 -0
  448. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/IdentityKeyStore.go +31 -0
  449. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/MessageKeyStore.go +23 -0
  450. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/PreKeyStore.go +23 -0
  451. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SessionStore.go +19 -0
  452. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignalProtocolStore.go +15 -0
  453. slidge_whatsapp/vendor/go.mau.fi/libsignal/state/store/SignedPreKeyStore.go +26 -0
  454. slidge_whatsapp/vendor/go.mau.fi/libsignal/util/bytehelper/ByteHelper.go +97 -0
  455. slidge_whatsapp/vendor/go.mau.fi/libsignal/util/errorhelper/ErrorHelper.go +40 -0
  456. slidge_whatsapp/vendor/go.mau.fi/libsignal/util/keyhelper/KeyHelper.go +95 -0
  457. slidge_whatsapp/vendor/go.mau.fi/libsignal/util/medium/Medium.go +4 -0
  458. slidge_whatsapp/vendor/go.mau.fi/libsignal/util/optional/Integer.go +17 -0
  459. slidge_whatsapp/vendor/go.mau.fi/util/LICENSE +373 -0
  460. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/connlog.go +257 -0
  461. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/database.go +309 -0
  462. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/iter.go +233 -0
  463. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/json.go +47 -0
  464. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/log.go +129 -0
  465. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/massinsert.go +164 -0
  466. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/queryhelper.go +137 -0
  467. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/reflectscan.go +30 -0
  468. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/transaction.go +180 -0
  469. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgrades.go +250 -0
  470. slidge_whatsapp/vendor/go.mau.fi/util/dbutil/upgradetable.go +331 -0
  471. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/dualerror.go +33 -0
  472. slidge_whatsapp/vendor/go.mau.fi/util/exerrors/must.go +23 -0
  473. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/cors.go +32 -0
  474. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/handleerrors.go +64 -0
  475. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/json.go +41 -0
  476. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/middleware.go +30 -0
  477. slidge_whatsapp/vendor/go.mau.fi/util/exhttp/networkerror.go +37 -0
  478. slidge_whatsapp/vendor/go.mau.fi/util/exsync/event.go +88 -0
  479. slidge_whatsapp/vendor/go.mau.fi/util/exsync/returnonce.go +25 -0
  480. slidge_whatsapp/vendor/go.mau.fi/util/exsync/ringbuffer.go +139 -0
  481. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncmap.go +94 -0
  482. slidge_whatsapp/vendor/go.mau.fi/util/exsync/syncset.go +136 -0
  483. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/callermarshal.go +28 -0
  484. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/defaults.go +32 -0
  485. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/generics.go +45 -0
  486. slidge_whatsapp/vendor/go.mau.fi/util/exzerolog/writer.go +81 -0
  487. slidge_whatsapp/vendor/go.mau.fi/util/fallocate/doc.go +9 -0
  488. slidge_whatsapp/vendor/go.mau.fi/util/fallocate/fallocate_darwin.go +29 -0
  489. slidge_whatsapp/vendor/go.mau.fi/util/fallocate/fallocate_linux.go +24 -0
  490. slidge_whatsapp/vendor/go.mau.fi/util/fallocate/fallocate_unknown.go +17 -0
  491. slidge_whatsapp/vendor/go.mau.fi/util/jsontime/duration.go +155 -0
  492. slidge_whatsapp/vendor/go.mau.fi/util/jsontime/helpers.go +59 -0
  493. slidge_whatsapp/vendor/go.mau.fi/util/jsontime/integer.go +170 -0
  494. slidge_whatsapp/vendor/go.mau.fi/util/jsontime/string.go +95 -0
  495. slidge_whatsapp/vendor/go.mau.fi/util/ptr/ptr.go +43 -0
  496. slidge_whatsapp/vendor/go.mau.fi/util/random/bytes.go +21 -0
  497. slidge_whatsapp/vendor/go.mau.fi/util/random/string.go +87 -0
  498. slidge_whatsapp/vendor/go.mau.fi/util/retryafter/retryafter.go +53 -0
  499. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/.editorconfig +13 -0
  500. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/.gitattributes +3 -0
  501. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/.pre-commit-config.yaml +31 -0
  502. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/LICENSE +374 -0
  503. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/README.md +35 -0
  504. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/decode.go +312 -0
  505. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/encode.go +323 -0
  506. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/errors.go +19 -0
  507. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/hash.go +97 -0
  508. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/keys.go +138 -0
  509. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate/lthash/lthash.go +58 -0
  510. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/appstate.go +409 -0
  511. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/armadillomessage.go +100 -0
  512. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/attrs.go +218 -0
  513. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/decoder.go +406 -0
  514. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/encoder.go +308 -0
  515. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/errors.go +12 -0
  516. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/node.go +139 -0
  517. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/token/token.go +94 -0
  518. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/unpack.go +31 -0
  519. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/binary/xml.go +108 -0
  520. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/broadcast.go +143 -0
  521. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/call.go +112 -0
  522. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/client.go +896 -0
  523. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/connectionevents.go +212 -0
  524. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download-to-file.go +227 -0
  525. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/download.go +394 -0
  526. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/errors.go +261 -0
  527. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/group.go +960 -0
  528. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/handshake.go +165 -0
  529. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/internals.go +680 -0
  530. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/keepalive.go +84 -0
  531. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaconn.go +98 -0
  532. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/mediaretry.go +185 -0
  533. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/message.go +842 -0
  534. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/msgsecret.go +374 -0
  535. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/newsletter.go +376 -0
  536. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/notification.go +452 -0
  537. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair-code.go +245 -0
  538. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/pair.go +272 -0
  539. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/prekeys.go +255 -0
  540. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/presence.go +139 -0
  541. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/privacysettings.go +170 -0
  542. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/.gitignore +1 -0
  543. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/armadilloutil/decode.go +32 -0
  544. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/extra.go +36 -0
  545. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.pb.go +515 -0
  546. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waAdv/WAAdv.proto +43 -0
  547. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.pb.go +2982 -0
  548. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/WAArmadilloApplication.proto +258 -0
  549. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloApplication/extra.go +3 -0
  550. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.pb.go +1017 -0
  551. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waArmadilloXMA/WAArmadilloXMA.proto +140 -0
  552. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.pb.go +412 -0
  553. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCert/WACert.proto +34 -0
  554. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.pb.go +138 -0
  555. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waChatLockSettings/WAProtobufsChatLockSettings.proto +10 -0
  556. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.pb.go +769 -0
  557. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/WACommon.proto +67 -0
  558. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCommon/legacy.go +11 -0
  559. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WACompanionReg.pb.go +978 -0
  560. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waCompanionReg/WACompanionReg.proto +100 -0
  561. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.pb.go +2817 -0
  562. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/WAConsumerApplication.proto +233 -0
  563. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waConsumerApplication/extra.go +82 -0
  564. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.pb.go +247 -0
  565. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waDeviceCapabilities/WAProtobufsDeviceCapabilities.proto +18 -0
  566. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.pb.go +26597 -0
  567. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/WAWebProtobufsE2E.proto +2550 -0
  568. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waE2E/legacy.go +31 -0
  569. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.pb.go +2368 -0
  570. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/WAWebProtobufsHistorySync.proto +231 -0
  571. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waHistorySync/legacy.go +11 -0
  572. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.pb.go +2130 -0
  573. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMediaTransport/WAMediaTransport.proto +191 -0
  574. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.pb.go +272 -0
  575. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMmsRetry/WAMmsRetry.proto +21 -0
  576. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.pb.go +1156 -0
  577. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/WAMsgApplication.proto +96 -0
  578. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgApplication/extra.go +41 -0
  579. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.pb.go +859 -0
  580. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/WAMsgTransport.proto +75 -0
  581. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMsgTransport/extra.go +19 -0
  582. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.pb.go +732 -0
  583. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/WAMultiDevice.proto +57 -0
  584. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waMultiDevice/extra.go +3 -0
  585. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.pb.go +857 -0
  586. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/WAServerSync.proto +72 -0
  587. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waServerSync/legacy.go +31 -0
  588. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.pb.go +5344 -0
  589. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waSyncAction/WASyncAction.proto +493 -0
  590. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.pb.go +428 -0
  591. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waUserPassword/WAProtobufsUserPassword.proto +33 -0
  592. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.pb.go +852 -0
  593. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waVnameCert/WAWebProtobufsVnameCert.proto +72 -0
  594. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.pb.go +2325 -0
  595. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWa6/WAWebProtobufsWa6.proto +253 -0
  596. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.pb.go +4441 -0
  597. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/WAWebProtobufsWeb.proto +579 -0
  598. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/proto/waWeb/legacy.go +1 -0
  599. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/push.go +110 -0
  600. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/qrchan.go +180 -0
  601. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/receipt.go +248 -0
  602. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/request.go +225 -0
  603. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/retry.go +450 -0
  604. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/send.go +1299 -0
  605. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/sendfb.go +657 -0
  606. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/socket/constants.go +43 -0
  607. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/socket/framesocket.go +235 -0
  608. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/socket/noisehandshake.go +124 -0
  609. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/socket/noisesocket.go +108 -0
  610. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/clientpayload.go +187 -0
  611. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/noop.go +256 -0
  612. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/signal.go +182 -0
  613. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/container.go +288 -0
  614. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/lidmap.go +186 -0
  615. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/store.go +897 -0
  616. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/00-latest-schema.sql +153 -0
  617. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/03-message-secrets.sql +11 -0
  618. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/04-privacy-tokens.sql +8 -0
  619. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/05-account-jid-format.sql +2 -0
  620. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/06-facebook-uuid.sql +2 -0
  621. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/07-account-lid.sql +2 -0
  622. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/08-lid-mapping.sql +5 -0
  623. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/09-decryption-buffer.sql +10 -0
  624. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/sqlstore/upgrades/upgrades.go +22 -0
  625. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/store/store.go +243 -0
  626. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/botmap.go +210 -0
  627. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/call.go +21 -0
  628. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/appstate.go +185 -0
  629. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/call.go +77 -0
  630. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/events/events.go +608 -0
  631. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/group.go +164 -0
  632. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/jid.go +262 -0
  633. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/message.go +115 -0
  634. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/newsletter.go +201 -0
  635. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/presence.go +78 -0
  636. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/types/user.go +195 -0
  637. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/update.go +64 -0
  638. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/upload.go +251 -0
  639. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/user.go +880 -0
  640. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/util/cbcutil/cbc.go +217 -0
  641. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/util/gcmutil/gcm.go +41 -0
  642. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/util/hkdfutil/hkdf.go +28 -0
  643. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/util/keys/keypair.go +68 -0
  644. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/util/log/log.go +83 -0
  645. slidge_whatsapp/vendor/go.mau.fi/whatsmeow/util/log/zerolog.go +38 -0
  646. slidge_whatsapp/vendor/golang.org/x/crypto/LICENSE +27 -0
  647. slidge_whatsapp/vendor/golang.org/x/crypto/PATENTS +22 -0
  648. slidge_whatsapp/vendor/golang.org/x/crypto/curve25519/curve25519.go +90 -0
  649. slidge_whatsapp/vendor/golang.org/x/crypto/hkdf/hkdf.go +95 -0
  650. slidge_whatsapp/vendor/golang.org/x/crypto/pbkdf2/pbkdf2.go +77 -0
  651. slidge_whatsapp/vendor/golang.org/x/exp/LICENSE +27 -0
  652. slidge_whatsapp/vendor/golang.org/x/exp/PATENTS +22 -0
  653. slidge_whatsapp/vendor/golang.org/x/exp/constraints/constraints.go +54 -0
  654. slidge_whatsapp/vendor/golang.org/x/image/LICENSE +27 -0
  655. slidge_whatsapp/vendor/golang.org/x/image/PATENTS +22 -0
  656. slidge_whatsapp/vendor/golang.org/x/image/draw/draw.go +67 -0
  657. slidge_whatsapp/vendor/golang.org/x/image/draw/impl.go +8426 -0
  658. slidge_whatsapp/vendor/golang.org/x/image/draw/scale.go +525 -0
  659. slidge_whatsapp/vendor/golang.org/x/image/math/f64/f64.go +37 -0
  660. slidge_whatsapp/vendor/golang.org/x/image/riff/riff.go +193 -0
  661. slidge_whatsapp/vendor/golang.org/x/image/vp8/decode.go +403 -0
  662. slidge_whatsapp/vendor/golang.org/x/image/vp8/filter.go +273 -0
  663. slidge_whatsapp/vendor/golang.org/x/image/vp8/idct.go +98 -0
  664. slidge_whatsapp/vendor/golang.org/x/image/vp8/partition.go +129 -0
  665. slidge_whatsapp/vendor/golang.org/x/image/vp8/pred.go +201 -0
  666. slidge_whatsapp/vendor/golang.org/x/image/vp8/predfunc.go +553 -0
  667. slidge_whatsapp/vendor/golang.org/x/image/vp8/quant.go +98 -0
  668. slidge_whatsapp/vendor/golang.org/x/image/vp8/reconstruct.go +442 -0
  669. slidge_whatsapp/vendor/golang.org/x/image/vp8/token.go +381 -0
  670. slidge_whatsapp/vendor/golang.org/x/image/vp8l/decode.go +603 -0
  671. slidge_whatsapp/vendor/golang.org/x/image/vp8l/huffman.go +245 -0
  672. slidge_whatsapp/vendor/golang.org/x/image/vp8l/transform.go +299 -0
  673. slidge_whatsapp/vendor/golang.org/x/image/webp/decode.go +276 -0
  674. slidge_whatsapp/vendor/golang.org/x/image/webp/doc.go +9 -0
  675. slidge_whatsapp/vendor/golang.org/x/net/LICENSE +27 -0
  676. slidge_whatsapp/vendor/golang.org/x/net/PATENTS +22 -0
  677. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
  678. slidge_whatsapp/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
  679. slidge_whatsapp/vendor/golang.org/x/net/http2/.gitignore +2 -0
  680. slidge_whatsapp/vendor/golang.org/x/net/http2/ascii.go +53 -0
  681. slidge_whatsapp/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  682. slidge_whatsapp/vendor/golang.org/x/net/http2/client_conn_pool.go +311 -0
  683. slidge_whatsapp/vendor/golang.org/x/net/http2/config.go +122 -0
  684. slidge_whatsapp/vendor/golang.org/x/net/http2/config_go124.go +61 -0
  685. slidge_whatsapp/vendor/golang.org/x/net/http2/config_pre_go124.go +16 -0
  686. slidge_whatsapp/vendor/golang.org/x/net/http2/databuffer.go +149 -0
  687. slidge_whatsapp/vendor/golang.org/x/net/http2/errors.go +145 -0
  688. slidge_whatsapp/vendor/golang.org/x/net/http2/flow.go +120 -0
  689. slidge_whatsapp/vendor/golang.org/x/net/http2/frame.go +1702 -0
  690. slidge_whatsapp/vendor/golang.org/x/net/http2/gotrack.go +170 -0
  691. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
  692. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
  693. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
  694. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
  695. slidge_whatsapp/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
  696. slidge_whatsapp/vendor/golang.org/x/net/http2/http2.go +432 -0
  697. slidge_whatsapp/vendor/golang.org/x/net/http2/pipe.go +184 -0
  698. slidge_whatsapp/vendor/golang.org/x/net/http2/server.go +3350 -0
  699. slidge_whatsapp/vendor/golang.org/x/net/http2/timer.go +20 -0
  700. slidge_whatsapp/vendor/golang.org/x/net/http2/transport.go +3287 -0
  701. slidge_whatsapp/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
  702. slidge_whatsapp/vendor/golang.org/x/net/http2/write.go +381 -0
  703. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched.go +251 -0
  704. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_priority.go +451 -0
  705. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_random.go +77 -0
  706. slidge_whatsapp/vendor/golang.org/x/net/http2/writesched_roundrobin.go +119 -0
  707. slidge_whatsapp/vendor/golang.org/x/net/idna/go118.go +13 -0
  708. slidge_whatsapp/vendor/golang.org/x/net/idna/idna10.0.0.go +769 -0
  709. slidge_whatsapp/vendor/golang.org/x/net/idna/idna9.0.0.go +717 -0
  710. slidge_whatsapp/vendor/golang.org/x/net/idna/pre_go118.go +11 -0
  711. slidge_whatsapp/vendor/golang.org/x/net/idna/punycode.go +217 -0
  712. slidge_whatsapp/vendor/golang.org/x/net/idna/tables10.0.0.go +4559 -0
  713. slidge_whatsapp/vendor/golang.org/x/net/idna/tables11.0.0.go +4653 -0
  714. slidge_whatsapp/vendor/golang.org/x/net/idna/tables12.0.0.go +4733 -0
  715. slidge_whatsapp/vendor/golang.org/x/net/idna/tables13.0.0.go +4959 -0
  716. slidge_whatsapp/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
  717. slidge_whatsapp/vendor/golang.org/x/net/idna/tables9.0.0.go +4486 -0
  718. slidge_whatsapp/vendor/golang.org/x/net/idna/trie.go +51 -0
  719. slidge_whatsapp/vendor/golang.org/x/net/idna/trie12.0.0.go +30 -0
  720. slidge_whatsapp/vendor/golang.org/x/net/idna/trie13.0.0.go +30 -0
  721. slidge_whatsapp/vendor/golang.org/x/net/idna/trieval.go +119 -0
  722. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
  723. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
  724. slidge_whatsapp/vendor/golang.org/x/net/internal/httpcommon/request.go +467 -0
  725. slidge_whatsapp/vendor/golang.org/x/net/internal/socks/client.go +168 -0
  726. slidge_whatsapp/vendor/golang.org/x/net/internal/socks/socks.go +317 -0
  727. slidge_whatsapp/vendor/golang.org/x/net/proxy/dial.go +54 -0
  728. slidge_whatsapp/vendor/golang.org/x/net/proxy/direct.go +31 -0
  729. slidge_whatsapp/vendor/golang.org/x/net/proxy/per_host.go +153 -0
  730. slidge_whatsapp/vendor/golang.org/x/net/proxy/proxy.go +149 -0
  731. slidge_whatsapp/vendor/golang.org/x/net/proxy/socks5.go +42 -0
  732. slidge_whatsapp/vendor/golang.org/x/sys/LICENSE +27 -0
  733. slidge_whatsapp/vendor/golang.org/x/sys/PATENTS +22 -0
  734. slidge_whatsapp/vendor/golang.org/x/sys/unix/.gitignore +2 -0
  735. slidge_whatsapp/vendor/golang.org/x/sys/unix/README.md +184 -0
  736. slidge_whatsapp/vendor/golang.org/x/sys/unix/affinity_linux.go +86 -0
  737. slidge_whatsapp/vendor/golang.org/x/sys/unix/aliases.go +13 -0
  738. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
  739. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
  740. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
  741. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
  742. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
  743. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
  744. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
  745. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
  746. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
  747. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
  748. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
  749. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
  750. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
  751. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
  752. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
  753. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
  754. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
  755. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
  756. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
  757. slidge_whatsapp/vendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
  758. slidge_whatsapp/vendor/golang.org/x/sys/unix/auxv.go +36 -0
  759. slidge_whatsapp/vendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
  760. slidge_whatsapp/vendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
  761. slidge_whatsapp/vendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
  762. slidge_whatsapp/vendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
  763. slidge_whatsapp/vendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
  764. slidge_whatsapp/vendor/golang.org/x/sys/unix/constants.go +13 -0
  765. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
  766. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
  767. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
  768. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
  769. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
  770. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_linux.go +42 -0
  771. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
  772. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
  773. slidge_whatsapp/vendor/golang.org/x/sys/unix/dev_zos.go +28 -0
  774. slidge_whatsapp/vendor/golang.org/x/sys/unix/dirent.go +102 -0
  775. slidge_whatsapp/vendor/golang.org/x/sys/unix/endian_big.go +9 -0
  776. slidge_whatsapp/vendor/golang.org/x/sys/unix/endian_little.go +9 -0
  777. slidge_whatsapp/vendor/golang.org/x/sys/unix/env_unix.go +31 -0
  778. slidge_whatsapp/vendor/golang.org/x/sys/unix/fcntl.go +36 -0
  779. slidge_whatsapp/vendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
  780. slidge_whatsapp/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
  781. slidge_whatsapp/vendor/golang.org/x/sys/unix/fdset.go +29 -0
  782. slidge_whatsapp/vendor/golang.org/x/sys/unix/gccgo.go +59 -0
  783. slidge_whatsapp/vendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
  784. slidge_whatsapp/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
  785. slidge_whatsapp/vendor/golang.org/x/sys/unix/ifreq_linux.go +141 -0
  786. slidge_whatsapp/vendor/golang.org/x/sys/unix/ioctl_linux.go +334 -0
  787. slidge_whatsapp/vendor/golang.org/x/sys/unix/ioctl_signed.go +69 -0
  788. slidge_whatsapp/vendor/golang.org/x/sys/unix/ioctl_unsigned.go +69 -0
  789. slidge_whatsapp/vendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
  790. slidge_whatsapp/vendor/golang.org/x/sys/unix/mkall.sh +249 -0
  791. slidge_whatsapp/vendor/golang.org/x/sys/unix/mkerrors.sh +805 -0
  792. slidge_whatsapp/vendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
  793. slidge_whatsapp/vendor/golang.org/x/sys/unix/mremap.go +57 -0
  794. slidge_whatsapp/vendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
  795. slidge_whatsapp/vendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
  796. slidge_whatsapp/vendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
  797. slidge_whatsapp/vendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
  798. slidge_whatsapp/vendor/golang.org/x/sys/unix/race.go +30 -0
  799. slidge_whatsapp/vendor/golang.org/x/sys/unix/race0.go +25 -0
  800. slidge_whatsapp/vendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
  801. slidge_whatsapp/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
  802. slidge_whatsapp/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
  803. slidge_whatsapp/vendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
  804. slidge_whatsapp/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
  805. slidge_whatsapp/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
  806. slidge_whatsapp/vendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
  807. slidge_whatsapp/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
  808. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall.go +86 -0
  809. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
  810. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
  811. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
  812. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
  813. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin.go +854 -0
  814. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
  815. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
  816. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
  817. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
  818. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
  819. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
  820. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
  821. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
  822. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
  823. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
  824. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
  825. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
  826. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
  827. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
  828. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux.go +2647 -0
  829. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_386.go +314 -0
  830. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
  831. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +145 -0
  832. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
  833. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +216 -0
  834. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +186 -0
  835. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
  836. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
  837. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
  838. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
  839. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
  840. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +218 -0
  841. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +188 -0
  842. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +174 -0
  843. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +204 -0
  844. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +115 -0
  845. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +191 -0
  846. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +296 -0
  847. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +112 -0
  848. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_netbsd.go +371 -0
  849. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
  850. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
  851. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
  852. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
  853. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd.go +342 -0
  854. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
  855. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
  856. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
  857. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
  858. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
  859. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
  860. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
  861. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
  862. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_solaris.go +1191 -0
  863. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
  864. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_unix.go +615 -0
  865. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
  866. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
  867. slidge_whatsapp/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
  868. slidge_whatsapp/vendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
  869. slidge_whatsapp/vendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
  870. slidge_whatsapp/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
  871. slidge_whatsapp/vendor/golang.org/x/sys/unix/timestruct.go +76 -0
  872. slidge_whatsapp/vendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
  873. slidge_whatsapp/vendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
  874. slidge_whatsapp/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
  875. slidge_whatsapp/vendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
  876. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
  877. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
  878. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
  879. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
  880. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
  881. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
  882. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
  883. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
  884. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
  885. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
  886. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux.go +3752 -0
  887. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +873 -0
  888. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +873 -0
  889. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +878 -0
  890. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +875 -0
  891. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +865 -0
  892. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +879 -0
  893. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +879 -0
  894. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +879 -0
  895. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +879 -0
  896. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +931 -0
  897. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +935 -0
  898. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +935 -0
  899. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +862 -0
  900. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +934 -0
  901. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +977 -0
  902. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
  903. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
  904. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
  905. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
  906. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
  907. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
  908. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
  909. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
  910. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
  911. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
  912. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
  913. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
  914. slidge_whatsapp/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
  915. slidge_whatsapp/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
  916. slidge_whatsapp/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
  917. slidge_whatsapp/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
  918. slidge_whatsapp/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
  919. slidge_whatsapp/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
  920. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
  921. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
  922. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
  923. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
  924. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
  925. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
  926. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
  927. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
  928. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
  929. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
  930. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
  931. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
  932. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
  933. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
  934. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
  935. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
  936. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux.go +2240 -0
  937. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +486 -0
  938. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +653 -0
  939. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +601 -0
  940. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +552 -0
  941. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +486 -0
  942. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +653 -0
  943. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +647 -0
  944. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +636 -0
  945. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +653 -0
  946. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +658 -0
  947. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +704 -0
  948. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +704 -0
  949. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +548 -0
  950. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +495 -0
  951. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +648 -0
  952. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
  953. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
  954. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
  955. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
  956. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2323 -0
  957. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +699 -0
  958. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2323 -0
  959. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +699 -0
  960. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2323 -0
  961. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +699 -0
  962. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2323 -0
  963. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +699 -0
  964. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2323 -0
  965. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +699 -0
  966. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2323 -0
  967. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +838 -0
  968. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2323 -0
  969. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +699 -0
  970. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
  971. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
  972. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
  973. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
  974. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
  975. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
  976. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
  977. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
  978. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
  979. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
  980. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
  981. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
  982. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
  983. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
  984. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
  985. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
  986. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
  987. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +465 -0
  988. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +388 -0
  989. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +429 -0
  990. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +332 -0
  991. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +328 -0
  992. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +449 -0
  993. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +379 -0
  994. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +379 -0
  995. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +449 -0
  996. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +456 -0
  997. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +428 -0
  998. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +428 -0
  999. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +333 -0
  1000. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +394 -0
  1001. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +407 -0
  1002. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
  1003. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
  1004. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
  1005. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
  1006. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
  1007. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
  1008. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
  1009. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
  1010. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
  1011. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
  1012. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
  1013. slidge_whatsapp/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
  1014. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
  1015. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
  1016. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
  1017. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
  1018. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
  1019. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
  1020. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
  1021. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
  1022. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
  1023. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
  1024. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux.go +6178 -0
  1025. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +689 -0
  1026. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +703 -0
  1027. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +683 -0
  1028. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +682 -0
  1029. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +683 -0
  1030. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +688 -0
  1031. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +685 -0
  1032. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +685 -0
  1033. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +688 -0
  1034. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +696 -0
  1035. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +691 -0
  1036. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +691 -0
  1037. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +770 -0
  1038. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +705 -0
  1039. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +686 -0
  1040. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
  1041. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
  1042. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
  1043. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
  1044. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
  1045. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
  1046. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
  1047. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
  1048. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
  1049. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
  1050. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
  1051. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
  1052. slidge_whatsapp/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
  1053. slidge_whatsapp/vendor/golang.org/x/sys/windows/aliases.go +12 -0
  1054. slidge_whatsapp/vendor/golang.org/x/sys/windows/dll_windows.go +415 -0
  1055. slidge_whatsapp/vendor/golang.org/x/sys/windows/env_windows.go +57 -0
  1056. slidge_whatsapp/vendor/golang.org/x/sys/windows/eventlog.go +20 -0
  1057. slidge_whatsapp/vendor/golang.org/x/sys/windows/exec_windows.go +248 -0
  1058. slidge_whatsapp/vendor/golang.org/x/sys/windows/memory_windows.go +48 -0
  1059. slidge_whatsapp/vendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
  1060. slidge_whatsapp/vendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
  1061. slidge_whatsapp/vendor/golang.org/x/sys/windows/mksyscall.go +9 -0
  1062. slidge_whatsapp/vendor/golang.org/x/sys/windows/race.go +30 -0
  1063. slidge_whatsapp/vendor/golang.org/x/sys/windows/race0.go +25 -0
  1064. slidge_whatsapp/vendor/golang.org/x/sys/windows/security_windows.go +1497 -0
  1065. slidge_whatsapp/vendor/golang.org/x/sys/windows/service.go +257 -0
  1066. slidge_whatsapp/vendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
  1067. slidge_whatsapp/vendor/golang.org/x/sys/windows/str.go +22 -0
  1068. slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall.go +104 -0
  1069. slidge_whatsapp/vendor/golang.org/x/sys/windows/syscall_windows.go +1934 -0
  1070. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows.go +3842 -0
  1071. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
  1072. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
  1073. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
  1074. slidge_whatsapp/vendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
  1075. slidge_whatsapp/vendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
  1076. slidge_whatsapp/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
  1077. slidge_whatsapp/vendor/golang.org/x/sys/windows/zsyscall_windows.go +4695 -0
  1078. slidge_whatsapp/vendor/golang.org/x/text/LICENSE +27 -0
  1079. slidge_whatsapp/vendor/golang.org/x/text/PATENTS +22 -0
  1080. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule.go +336 -0
  1081. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule10.0.0.go +11 -0
  1082. slidge_whatsapp/vendor/golang.org/x/text/secure/bidirule/bidirule9.0.0.go +14 -0
  1083. slidge_whatsapp/vendor/golang.org/x/text/transform/transform.go +709 -0
  1084. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
  1085. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  1086. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/core.go +1071 -0
  1087. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  1088. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables10.0.0.go +1815 -0
  1089. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables11.0.0.go +1887 -0
  1090. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables12.0.0.go +1923 -0
  1091. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables13.0.0.go +1955 -0
  1092. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
  1093. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/tables9.0.0.go +1781 -0
  1094. slidge_whatsapp/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
  1095. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
  1096. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/forminfo.go +279 -0
  1097. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  1098. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/iter.go +458 -0
  1099. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
  1100. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  1101. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables10.0.0.go +7657 -0
  1102. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables11.0.0.go +7693 -0
  1103. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables12.0.0.go +7710 -0
  1104. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables13.0.0.go +7760 -0
  1105. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
  1106. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/tables9.0.0.go +7637 -0
  1107. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  1108. slidge_whatsapp/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  1109. slidge_whatsapp/vendor/google.golang.org/protobuf/LICENSE +27 -0
  1110. slidge_whatsapp/vendor/google.golang.org/protobuf/PATENTS +22 -0
  1111. slidge_whatsapp/vendor/google.golang.org/protobuf/encoding/prototext/decode.go +767 -0
  1112. slidge_whatsapp/vendor/google.golang.org/protobuf/encoding/prototext/doc.go +7 -0
  1113. slidge_whatsapp/vendor/google.golang.org/protobuf/encoding/prototext/encode.go +380 -0
  1114. slidge_whatsapp/vendor/google.golang.org/protobuf/encoding/protowire/wire.go +547 -0
  1115. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/descfmt/stringer.go +414 -0
  1116. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/descopts/options.go +29 -0
  1117. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/detrand/rand.go +69 -0
  1118. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/defaults.go +12 -0
  1119. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/editiondefaults/editions_defaults.binpb +0 -0
  1120. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/defval/default.go +213 -0
  1121. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/messageset/messageset.go +242 -0
  1122. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/tag/tag.go +201 -0
  1123. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/text/decode.go +686 -0
  1124. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/text/decode_number.go +211 -0
  1125. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/text/decode_string.go +161 -0
  1126. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/text/decode_token.go +373 -0
  1127. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/text/doc.go +29 -0
  1128. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/encoding/text/encode.go +272 -0
  1129. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/errors/errors.go +104 -0
  1130. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/build.go +157 -0
  1131. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/desc.go +748 -0
  1132. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/desc_init.go +560 -0
  1133. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/desc_lazy.go +694 -0
  1134. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/desc_list.go +457 -0
  1135. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/desc_list_gen.go +367 -0
  1136. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/editions.go +167 -0
  1137. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filedesc/placeholder.go +110 -0
  1138. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/filetype/build.go +296 -0
  1139. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/flags/flags.go +24 -0
  1140. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_disable.go +10 -0
  1141. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/flags/proto_legacy_enable.go +10 -0
  1142. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/any_gen.go +34 -0
  1143. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/api_gen.go +106 -0
  1144. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/descriptor_gen.go +1286 -0
  1145. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/doc.go +11 -0
  1146. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/duration_gen.go +34 -0
  1147. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/empty_gen.go +19 -0
  1148. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/field_mask_gen.go +31 -0
  1149. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/go_features_gen.go +70 -0
  1150. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/goname.go +20 -0
  1151. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/map_entry.go +16 -0
  1152. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/name.go +12 -0
  1153. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/source_context_gen.go +31 -0
  1154. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/struct_gen.go +121 -0
  1155. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/timestamp_gen.go +34 -0
  1156. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/type_gen.go +228 -0
  1157. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/wrappers.go +13 -0
  1158. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/genid/wrappers_gen.go +175 -0
  1159. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/api_export.go +177 -0
  1160. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/api_export_opaque.go +128 -0
  1161. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/bitmap.go +34 -0
  1162. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/bitmap_race.go +126 -0
  1163. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/checkinit.go +174 -0
  1164. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_extension.go +228 -0
  1165. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_field.go +788 -0
  1166. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_field_opaque.go +264 -0
  1167. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_gen.go +5724 -0
  1168. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_map.go +399 -0
  1169. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_message.go +230 -0
  1170. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_message_opaque.go +153 -0
  1171. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_messageset.go +145 -0
  1172. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_tables.go +557 -0
  1173. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/codec_unsafe.go +15 -0
  1174. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/convert.go +495 -0
  1175. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/convert_list.go +141 -0
  1176. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/convert_map.go +121 -0
  1177. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/decode.go +333 -0
  1178. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/encode.go +315 -0
  1179. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/enum.go +21 -0
  1180. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/equal.go +224 -0
  1181. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/extension.go +156 -0
  1182. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/lazy.go +433 -0
  1183. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/legacy_enum.go +219 -0
  1184. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/legacy_export.go +92 -0
  1185. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/legacy_extension.go +177 -0
  1186. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/legacy_file.go +81 -0
  1187. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/legacy_message.go +569 -0
  1188. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/merge.go +203 -0
  1189. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/merge_gen.go +209 -0
  1190. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message.go +283 -0
  1191. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_opaque.go +627 -0
  1192. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_opaque_gen.go +132 -0
  1193. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_reflect.go +462 -0
  1194. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field.go +423 -0
  1195. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_reflect_field_gen.go +273 -0
  1196. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/message_reflect_gen.go +271 -0
  1197. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe.go +220 -0
  1198. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/pointer_unsafe_opaque.go +42 -0
  1199. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/presence.go +142 -0
  1200. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/impl/validate.go +570 -0
  1201. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/order/order.go +89 -0
  1202. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/order/range.go +115 -0
  1203. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/pragma/pragma.go +29 -0
  1204. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/protolazy/bufferreader.go +364 -0
  1205. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/protolazy/lazy.go +359 -0
  1206. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/protolazy/pointer_unsafe.go +17 -0
  1207. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/set/ints.go +58 -0
  1208. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings.go +196 -0
  1209. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/strs/strings_unsafe.go +71 -0
  1210. slidge_whatsapp/vendor/google.golang.org/protobuf/internal/version/version.go +79 -0
  1211. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/checkinit.go +71 -0
  1212. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/decode.go +307 -0
  1213. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/decode_gen.go +603 -0
  1214. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/doc.go +86 -0
  1215. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/encode.go +355 -0
  1216. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/encode_gen.go +97 -0
  1217. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/equal.go +66 -0
  1218. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/extension.go +166 -0
  1219. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/merge.go +145 -0
  1220. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/messageset.go +98 -0
  1221. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/proto.go +45 -0
  1222. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/proto_methods.go +20 -0
  1223. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/proto_reflect.go +20 -0
  1224. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/reset.go +43 -0
  1225. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/size.go +111 -0
  1226. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/size_gen.go +55 -0
  1227. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/wrapperopaque.go +80 -0
  1228. slidge_whatsapp/vendor/google.golang.org/protobuf/proto/wrappers.go +29 -0
  1229. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/methods.go +88 -0
  1230. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/proto.go +513 -0
  1231. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source.go +129 -0
  1232. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/source_gen.go +575 -0
  1233. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/type.go +666 -0
  1234. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value.go +285 -0
  1235. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_equal.go +168 -0
  1236. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_union.go +438 -0
  1237. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoreflect/value_unsafe.go +84 -0
  1238. slidge_whatsapp/vendor/google.golang.org/protobuf/reflect/protoregistry/registry.go +882 -0
  1239. slidge_whatsapp/vendor/google.golang.org/protobuf/runtime/protoiface/legacy.go +15 -0
  1240. slidge_whatsapp/vendor/google.golang.org/protobuf/runtime/protoiface/methods.go +202 -0
  1241. slidge_whatsapp/vendor/google.golang.org/protobuf/runtime/protoimpl/impl.go +48 -0
  1242. slidge_whatsapp/vendor/google.golang.org/protobuf/runtime/protoimpl/version.go +60 -0
  1243. slidge_whatsapp/vendor/modules.txt +198 -0
  1244. slidge_whatsapp-0.2.6.dist-info/METADATA +63 -0
  1245. slidge_whatsapp-0.2.6.dist-info/RECORD +1253 -0
  1246. {slidge_whatsapp-0.2.2.dist-info → slidge_whatsapp-0.2.6.dist-info}/WHEEL +1 -1
  1247. slidge_whatsapp-0.2.2.dist-info/METADATA +0 -744
  1248. slidge_whatsapp-0.2.2.dist-info/RECORD +0 -31
  1249. {slidge_whatsapp-0.2.2.dist-info → slidge_whatsapp-0.2.6.dist-info}/LICENSE +0 -0
  1250. {slidge_whatsapp-0.2.2.dist-info → slidge_whatsapp-0.2.6.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,2647 @@
1
+ // Copyright 2009 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
+ // Linux system calls.
6
+ // This file is compiled as ordinary Go code,
7
+ // but it is also input to mksyscall,
8
+ // which parses the //sys lines and generates system call stubs.
9
+ // Note that sometimes we use a lowercase //sys name and
10
+ // wrap it in our own nicer implementation.
11
+
12
+ package unix
13
+
14
+ import (
15
+ "encoding/binary"
16
+ "slices"
17
+ "strconv"
18
+ "syscall"
19
+ "time"
20
+ "unsafe"
21
+ )
22
+
23
+ /*
24
+ * Wrapped
25
+ */
26
+
27
+ func Access(path string, mode uint32) (err error) {
28
+ return Faccessat(AT_FDCWD, path, mode, 0)
29
+ }
30
+
31
+ func Chmod(path string, mode uint32) (err error) {
32
+ return Fchmodat(AT_FDCWD, path, mode, 0)
33
+ }
34
+
35
+ func Chown(path string, uid int, gid int) (err error) {
36
+ return Fchownat(AT_FDCWD, path, uid, gid, 0)
37
+ }
38
+
39
+ func Creat(path string, mode uint32) (fd int, err error) {
40
+ return Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)
41
+ }
42
+
43
+ func EpollCreate(size int) (fd int, err error) {
44
+ if size <= 0 {
45
+ return -1, EINVAL
46
+ }
47
+ return EpollCreate1(0)
48
+ }
49
+
50
+ //sys FanotifyInit(flags uint, event_f_flags uint) (fd int, err error)
51
+ //sys fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error)
52
+
53
+ func FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) {
54
+ if pathname == "" {
55
+ return fanotifyMark(fd, flags, mask, dirFd, nil)
56
+ }
57
+ p, err := BytePtrFromString(pathname)
58
+ if err != nil {
59
+ return err
60
+ }
61
+ return fanotifyMark(fd, flags, mask, dirFd, p)
62
+ }
63
+
64
+ //sys fchmodat(dirfd int, path string, mode uint32) (err error)
65
+ //sys fchmodat2(dirfd int, path string, mode uint32, flags int) (err error)
66
+
67
+ func Fchmodat(dirfd int, path string, mode uint32, flags int) error {
68
+ // Linux fchmodat doesn't support the flags parameter, but fchmodat2 does.
69
+ // Try fchmodat2 if flags are specified.
70
+ if flags != 0 {
71
+ err := fchmodat2(dirfd, path, mode, flags)
72
+ if err == ENOSYS {
73
+ // fchmodat2 isn't available. If the flags are known to be valid,
74
+ // return EOPNOTSUPP to indicate that fchmodat doesn't support them.
75
+ if flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {
76
+ return EINVAL
77
+ } else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {
78
+ return EOPNOTSUPP
79
+ }
80
+ }
81
+ return err
82
+ }
83
+ return fchmodat(dirfd, path, mode)
84
+ }
85
+
86
+ func InotifyInit() (fd int, err error) {
87
+ return InotifyInit1(0)
88
+ }
89
+
90
+ //sys ioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL
91
+ //sys ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL
92
+
93
+ // ioctl itself should not be exposed directly, but additional get/set functions
94
+ // for specific types are permissible. These are defined in ioctl.go and
95
+ // ioctl_linux.go.
96
+ //
97
+ // The third argument to ioctl is often a pointer but sometimes an integer.
98
+ // Callers should use ioctlPtr when the third argument is a pointer and ioctl
99
+ // when the third argument is an integer.
100
+ //
101
+ // TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr.
102
+
103
+ //sys Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)
104
+
105
+ func Link(oldpath string, newpath string) (err error) {
106
+ return Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)
107
+ }
108
+
109
+ func Mkdir(path string, mode uint32) (err error) {
110
+ return Mkdirat(AT_FDCWD, path, mode)
111
+ }
112
+
113
+ func Mknod(path string, mode uint32, dev int) (err error) {
114
+ return Mknodat(AT_FDCWD, path, mode, dev)
115
+ }
116
+
117
+ func Open(path string, mode int, perm uint32) (fd int, err error) {
118
+ return openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)
119
+ }
120
+
121
+ //sys openat(dirfd int, path string, flags int, mode uint32) (fd int, err error)
122
+
123
+ func Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {
124
+ return openat(dirfd, path, flags|O_LARGEFILE, mode)
125
+ }
126
+
127
+ //sys openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)
128
+
129
+ func Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {
130
+ return openat2(dirfd, path, how, SizeofOpenHow)
131
+ }
132
+
133
+ func Pipe(p []int) error {
134
+ return Pipe2(p, 0)
135
+ }
136
+
137
+ //sysnb pipe2(p *[2]_C_int, flags int) (err error)
138
+
139
+ func Pipe2(p []int, flags int) error {
140
+ if len(p) != 2 {
141
+ return EINVAL
142
+ }
143
+ var pp [2]_C_int
144
+ err := pipe2(&pp, flags)
145
+ if err == nil {
146
+ p[0] = int(pp[0])
147
+ p[1] = int(pp[1])
148
+ }
149
+ return err
150
+ }
151
+
152
+ //sys ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)
153
+
154
+ func Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
155
+ if len(fds) == 0 {
156
+ return ppoll(nil, 0, timeout, sigmask)
157
+ }
158
+ return ppoll(&fds[0], len(fds), timeout, sigmask)
159
+ }
160
+
161
+ func Poll(fds []PollFd, timeout int) (n int, err error) {
162
+ var ts *Timespec
163
+ if timeout >= 0 {
164
+ ts = new(Timespec)
165
+ *ts = NsecToTimespec(int64(timeout) * 1e6)
166
+ }
167
+ return Ppoll(fds, ts, nil)
168
+ }
169
+
170
+ //sys Readlinkat(dirfd int, path string, buf []byte) (n int, err error)
171
+
172
+ func Readlink(path string, buf []byte) (n int, err error) {
173
+ return Readlinkat(AT_FDCWD, path, buf)
174
+ }
175
+
176
+ func Rename(oldpath string, newpath string) (err error) {
177
+ return Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)
178
+ }
179
+
180
+ func Rmdir(path string) error {
181
+ return Unlinkat(AT_FDCWD, path, AT_REMOVEDIR)
182
+ }
183
+
184
+ //sys Symlinkat(oldpath string, newdirfd int, newpath string) (err error)
185
+
186
+ func Symlink(oldpath string, newpath string) (err error) {
187
+ return Symlinkat(oldpath, AT_FDCWD, newpath)
188
+ }
189
+
190
+ func Unlink(path string) error {
191
+ return Unlinkat(AT_FDCWD, path, 0)
192
+ }
193
+
194
+ //sys Unlinkat(dirfd int, path string, flags int) (err error)
195
+
196
+ func Utimes(path string, tv []Timeval) error {
197
+ if tv == nil {
198
+ err := utimensat(AT_FDCWD, path, nil, 0)
199
+ if err != ENOSYS {
200
+ return err
201
+ }
202
+ return utimes(path, nil)
203
+ }
204
+ if len(tv) != 2 {
205
+ return EINVAL
206
+ }
207
+ var ts [2]Timespec
208
+ ts[0] = NsecToTimespec(TimevalToNsec(tv[0]))
209
+ ts[1] = NsecToTimespec(TimevalToNsec(tv[1]))
210
+ err := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)
211
+ if err != ENOSYS {
212
+ return err
213
+ }
214
+ return utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
215
+ }
216
+
217
+ //sys utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)
218
+
219
+ func UtimesNano(path string, ts []Timespec) error {
220
+ return UtimesNanoAt(AT_FDCWD, path, ts, 0)
221
+ }
222
+
223
+ func UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {
224
+ if ts == nil {
225
+ return utimensat(dirfd, path, nil, flags)
226
+ }
227
+ if len(ts) != 2 {
228
+ return EINVAL
229
+ }
230
+ return utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)
231
+ }
232
+
233
+ func Futimesat(dirfd int, path string, tv []Timeval) error {
234
+ if tv == nil {
235
+ return futimesat(dirfd, path, nil)
236
+ }
237
+ if len(tv) != 2 {
238
+ return EINVAL
239
+ }
240
+ return futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))
241
+ }
242
+
243
+ func Futimes(fd int, tv []Timeval) (err error) {
244
+ // Believe it or not, this is the best we can do on Linux
245
+ // (and is what glibc does).
246
+ return Utimes("/proc/self/fd/"+strconv.Itoa(fd), tv)
247
+ }
248
+
249
+ const ImplementsGetwd = true
250
+
251
+ //sys Getcwd(buf []byte) (n int, err error)
252
+
253
+ func Getwd() (wd string, err error) {
254
+ var buf [PathMax]byte
255
+ n, err := Getcwd(buf[0:])
256
+ if err != nil {
257
+ return "", err
258
+ }
259
+ // Getcwd returns the number of bytes written to buf, including the NUL.
260
+ if n < 1 || n > len(buf) || buf[n-1] != 0 {
261
+ return "", EINVAL
262
+ }
263
+ // In some cases, Linux can return a path that starts with the
264
+ // "(unreachable)" prefix, which can potentially be a valid relative
265
+ // path. To work around that, return ENOENT if path is not absolute.
266
+ if buf[0] != '/' {
267
+ return "", ENOENT
268
+ }
269
+
270
+ return string(buf[0 : n-1]), nil
271
+ }
272
+
273
+ func Getgroups() (gids []int, err error) {
274
+ n, err := getgroups(0, nil)
275
+ if err != nil {
276
+ return nil, err
277
+ }
278
+ if n == 0 {
279
+ return nil, nil
280
+ }
281
+
282
+ // Sanity check group count. Max is 1<<16 on Linux.
283
+ if n < 0 || n > 1<<20 {
284
+ return nil, EINVAL
285
+ }
286
+
287
+ a := make([]_Gid_t, n)
288
+ n, err = getgroups(n, &a[0])
289
+ if err != nil {
290
+ return nil, err
291
+ }
292
+ gids = make([]int, n)
293
+ for i, v := range a[0:n] {
294
+ gids[i] = int(v)
295
+ }
296
+ return
297
+ }
298
+
299
+ func Setgroups(gids []int) (err error) {
300
+ if len(gids) == 0 {
301
+ return setgroups(0, nil)
302
+ }
303
+
304
+ a := make([]_Gid_t, len(gids))
305
+ for i, v := range gids {
306
+ a[i] = _Gid_t(v)
307
+ }
308
+ return setgroups(len(a), &a[0])
309
+ }
310
+
311
+ type WaitStatus uint32
312
+
313
+ // Wait status is 7 bits at bottom, either 0 (exited),
314
+ // 0x7F (stopped), or a signal number that caused an exit.
315
+ // The 0x80 bit is whether there was a core dump.
316
+ // An extra number (exit code, signal causing a stop)
317
+ // is in the high bits. At least that's the idea.
318
+ // There are various irregularities. For example, the
319
+ // "continued" status is 0xFFFF, distinguishing itself
320
+ // from stopped via the core dump bit.
321
+
322
+ const (
323
+ mask = 0x7F
324
+ core = 0x80
325
+ exited = 0x00
326
+ stopped = 0x7F
327
+ shift = 8
328
+ )
329
+
330
+ func (w WaitStatus) Exited() bool { return w&mask == exited }
331
+
332
+ func (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }
333
+
334
+ func (w WaitStatus) Stopped() bool { return w&0xFF == stopped }
335
+
336
+ func (w WaitStatus) Continued() bool { return w == 0xFFFF }
337
+
338
+ func (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }
339
+
340
+ func (w WaitStatus) ExitStatus() int {
341
+ if !w.Exited() {
342
+ return -1
343
+ }
344
+ return int(w>>shift) & 0xFF
345
+ }
346
+
347
+ func (w WaitStatus) Signal() syscall.Signal {
348
+ if !w.Signaled() {
349
+ return -1
350
+ }
351
+ return syscall.Signal(w & mask)
352
+ }
353
+
354
+ func (w WaitStatus) StopSignal() syscall.Signal {
355
+ if !w.Stopped() {
356
+ return -1
357
+ }
358
+ return syscall.Signal(w>>shift) & 0xFF
359
+ }
360
+
361
+ func (w WaitStatus) TrapCause() int {
362
+ if w.StopSignal() != SIGTRAP {
363
+ return -1
364
+ }
365
+ return int(w>>shift) >> 8
366
+ }
367
+
368
+ //sys wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)
369
+
370
+ func Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {
371
+ var status _C_int
372
+ wpid, err = wait4(pid, &status, options, rusage)
373
+ if wstatus != nil {
374
+ *wstatus = WaitStatus(status)
375
+ }
376
+ return
377
+ }
378
+
379
+ //sys Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error)
380
+
381
+ func Mkfifo(path string, mode uint32) error {
382
+ return Mknod(path, mode|S_IFIFO, 0)
383
+ }
384
+
385
+ func Mkfifoat(dirfd int, path string, mode uint32) error {
386
+ return Mknodat(dirfd, path, mode|S_IFIFO, 0)
387
+ }
388
+
389
+ func (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {
390
+ if sa.Port < 0 || sa.Port > 0xFFFF {
391
+ return nil, 0, EINVAL
392
+ }
393
+ sa.raw.Family = AF_INET
394
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
395
+ p[0] = byte(sa.Port >> 8)
396
+ p[1] = byte(sa.Port)
397
+ sa.raw.Addr = sa.Addr
398
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil
399
+ }
400
+
401
+ func (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {
402
+ if sa.Port < 0 || sa.Port > 0xFFFF {
403
+ return nil, 0, EINVAL
404
+ }
405
+ sa.raw.Family = AF_INET6
406
+ p := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))
407
+ p[0] = byte(sa.Port >> 8)
408
+ p[1] = byte(sa.Port)
409
+ sa.raw.Scope_id = sa.ZoneId
410
+ sa.raw.Addr = sa.Addr
411
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil
412
+ }
413
+
414
+ func (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {
415
+ name := sa.Name
416
+ n := len(name)
417
+ if n >= len(sa.raw.Path) {
418
+ return nil, 0, EINVAL
419
+ }
420
+ sa.raw.Family = AF_UNIX
421
+ for i := range n {
422
+ sa.raw.Path[i] = int8(name[i])
423
+ }
424
+ // length is family (uint16), name, NUL.
425
+ sl := _Socklen(2)
426
+ if n > 0 {
427
+ sl += _Socklen(n) + 1
428
+ }
429
+ if sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {
430
+ // Check sl > 3 so we don't change unnamed socket behavior.
431
+ sa.raw.Path[0] = 0
432
+ // Don't count trailing NUL for abstract address.
433
+ sl--
434
+ }
435
+
436
+ return unsafe.Pointer(&sa.raw), sl, nil
437
+ }
438
+
439
+ // SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.
440
+ type SockaddrLinklayer struct {
441
+ Protocol uint16
442
+ Ifindex int
443
+ Hatype uint16
444
+ Pkttype uint8
445
+ Halen uint8
446
+ Addr [8]byte
447
+ raw RawSockaddrLinklayer
448
+ }
449
+
450
+ func (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {
451
+ if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {
452
+ return nil, 0, EINVAL
453
+ }
454
+ sa.raw.Family = AF_PACKET
455
+ sa.raw.Protocol = sa.Protocol
456
+ sa.raw.Ifindex = int32(sa.Ifindex)
457
+ sa.raw.Hatype = sa.Hatype
458
+ sa.raw.Pkttype = sa.Pkttype
459
+ sa.raw.Halen = sa.Halen
460
+ sa.raw.Addr = sa.Addr
461
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil
462
+ }
463
+
464
+ // SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.
465
+ type SockaddrNetlink struct {
466
+ Family uint16
467
+ Pad uint16
468
+ Pid uint32
469
+ Groups uint32
470
+ raw RawSockaddrNetlink
471
+ }
472
+
473
+ func (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {
474
+ sa.raw.Family = AF_NETLINK
475
+ sa.raw.Pad = sa.Pad
476
+ sa.raw.Pid = sa.Pid
477
+ sa.raw.Groups = sa.Groups
478
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil
479
+ }
480
+
481
+ // SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets
482
+ // using the HCI protocol.
483
+ type SockaddrHCI struct {
484
+ Dev uint16
485
+ Channel uint16
486
+ raw RawSockaddrHCI
487
+ }
488
+
489
+ func (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {
490
+ sa.raw.Family = AF_BLUETOOTH
491
+ sa.raw.Dev = sa.Dev
492
+ sa.raw.Channel = sa.Channel
493
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil
494
+ }
495
+
496
+ // SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets
497
+ // using the L2CAP protocol.
498
+ type SockaddrL2 struct {
499
+ PSM uint16
500
+ CID uint16
501
+ Addr [6]uint8
502
+ AddrType uint8
503
+ raw RawSockaddrL2
504
+ }
505
+
506
+ func (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {
507
+ sa.raw.Family = AF_BLUETOOTH
508
+ psm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))
509
+ psm[0] = byte(sa.PSM)
510
+ psm[1] = byte(sa.PSM >> 8)
511
+ for i := range len(sa.Addr) {
512
+ sa.raw.Bdaddr[i] = sa.Addr[len(sa.Addr)-1-i]
513
+ }
514
+ cid := (*[2]byte)(unsafe.Pointer(&sa.raw.Cid))
515
+ cid[0] = byte(sa.CID)
516
+ cid[1] = byte(sa.CID >> 8)
517
+ sa.raw.Bdaddr_type = sa.AddrType
518
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrL2, nil
519
+ }
520
+
521
+ // SockaddrRFCOMM implements the Sockaddr interface for AF_BLUETOOTH type sockets
522
+ // using the RFCOMM protocol.
523
+ //
524
+ // Server example:
525
+ //
526
+ // fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)
527
+ // _ = unix.Bind(fd, &unix.SockaddrRFCOMM{
528
+ // Channel: 1,
529
+ // Addr: [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00
530
+ // })
531
+ // _ = Listen(fd, 1)
532
+ // nfd, sa, _ := Accept(fd)
533
+ // fmt.Printf("conn addr=%v fd=%d", sa.(*unix.SockaddrRFCOMM).Addr, nfd)
534
+ // Read(nfd, buf)
535
+ //
536
+ // Client example:
537
+ //
538
+ // fd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)
539
+ // _ = Connect(fd, &SockaddrRFCOMM{
540
+ // Channel: 1,
541
+ // Addr: [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11
542
+ // })
543
+ // Write(fd, []byte(`hello`))
544
+ type SockaddrRFCOMM struct {
545
+ // Addr represents a bluetooth address, byte ordering is little-endian.
546
+ Addr [6]uint8
547
+
548
+ // Channel is a designated bluetooth channel, only 1-30 are available for use.
549
+ // Since Linux 2.6.7 and further zero value is the first available channel.
550
+ Channel uint8
551
+
552
+ raw RawSockaddrRFCOMM
553
+ }
554
+
555
+ func (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {
556
+ sa.raw.Family = AF_BLUETOOTH
557
+ sa.raw.Channel = sa.Channel
558
+ sa.raw.Bdaddr = sa.Addr
559
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil
560
+ }
561
+
562
+ // SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.
563
+ // The RxID and TxID fields are used for transport protocol addressing in
564
+ // (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with
565
+ // zero values for CAN_RAW and CAN_BCM sockets as they have no meaning.
566
+ //
567
+ // The SockaddrCAN struct must be bound to the socket file descriptor
568
+ // using Bind before the CAN socket can be used.
569
+ //
570
+ // // Read one raw CAN frame
571
+ // fd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)
572
+ // addr := &SockaddrCAN{Ifindex: index}
573
+ // Bind(fd, addr)
574
+ // frame := make([]byte, 16)
575
+ // Read(fd, frame)
576
+ //
577
+ // The full SocketCAN documentation can be found in the linux kernel
578
+ // archives at: https://www.kernel.org/doc/Documentation/networking/can.txt
579
+ type SockaddrCAN struct {
580
+ Ifindex int
581
+ RxID uint32
582
+ TxID uint32
583
+ raw RawSockaddrCAN
584
+ }
585
+
586
+ func (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {
587
+ if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {
588
+ return nil, 0, EINVAL
589
+ }
590
+ sa.raw.Family = AF_CAN
591
+ sa.raw.Ifindex = int32(sa.Ifindex)
592
+ rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
593
+ for i := range 4 {
594
+ sa.raw.Addr[i] = rx[i]
595
+ }
596
+ tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
597
+ for i := range 4 {
598
+ sa.raw.Addr[i+4] = tx[i]
599
+ }
600
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil
601
+ }
602
+
603
+ // SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939
604
+ // protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information
605
+ // on the purposes of the fields, check the official linux kernel documentation
606
+ // available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst
607
+ type SockaddrCANJ1939 struct {
608
+ Ifindex int
609
+ Name uint64
610
+ PGN uint32
611
+ Addr uint8
612
+ raw RawSockaddrCAN
613
+ }
614
+
615
+ func (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) {
616
+ if sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {
617
+ return nil, 0, EINVAL
618
+ }
619
+ sa.raw.Family = AF_CAN
620
+ sa.raw.Ifindex = int32(sa.Ifindex)
621
+ n := (*[8]byte)(unsafe.Pointer(&sa.Name))
622
+ for i := range 8 {
623
+ sa.raw.Addr[i] = n[i]
624
+ }
625
+ p := (*[4]byte)(unsafe.Pointer(&sa.PGN))
626
+ for i := range 4 {
627
+ sa.raw.Addr[i+8] = p[i]
628
+ }
629
+ sa.raw.Addr[12] = sa.Addr
630
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil
631
+ }
632
+
633
+ // SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.
634
+ // SockaddrALG enables userspace access to the Linux kernel's cryptography
635
+ // subsystem. The Type and Name fields specify which type of hash or cipher
636
+ // should be used with a given socket.
637
+ //
638
+ // To create a file descriptor that provides access to a hash or cipher, both
639
+ // Bind and Accept must be used. Once the setup process is complete, input
640
+ // data can be written to the socket, processed by the kernel, and then read
641
+ // back as hash output or ciphertext.
642
+ //
643
+ // Here is an example of using an AF_ALG socket with SHA1 hashing.
644
+ // The initial socket setup process is as follows:
645
+ //
646
+ // // Open a socket to perform SHA1 hashing.
647
+ // fd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)
648
+ // addr := &unix.SockaddrALG{Type: "hash", Name: "sha1"}
649
+ // unix.Bind(fd, addr)
650
+ // // Note: unix.Accept does not work at this time; must invoke accept()
651
+ // // manually using unix.Syscall.
652
+ // hashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0)
653
+ //
654
+ // Once a file descriptor has been returned from Accept, it may be used to
655
+ // perform SHA1 hashing. The descriptor is not safe for concurrent use, but
656
+ // may be re-used repeatedly with subsequent Write and Read operations.
657
+ //
658
+ // When hashing a small byte slice or string, a single Write and Read may
659
+ // be used:
660
+ //
661
+ // // Assume hashfd is already configured using the setup process.
662
+ // hash := os.NewFile(hashfd, "sha1")
663
+ // // Hash an input string and read the results. Each Write discards
664
+ // // previous hash state. Read always reads the current state.
665
+ // b := make([]byte, 20)
666
+ // for i := 0; i < 2; i++ {
667
+ // io.WriteString(hash, "Hello, world.")
668
+ // hash.Read(b)
669
+ // fmt.Println(hex.EncodeToString(b))
670
+ // }
671
+ // // Output:
672
+ // // 2ae01472317d1935a84797ec1983ae243fc6aa28
673
+ // // 2ae01472317d1935a84797ec1983ae243fc6aa28
674
+ //
675
+ // For hashing larger byte slices, or byte streams such as those read from
676
+ // a file or socket, use Sendto with MSG_MORE to instruct the kernel to update
677
+ // the hash digest instead of creating a new one for a given chunk and finalizing it.
678
+ //
679
+ // // Assume hashfd and addr are already configured using the setup process.
680
+ // hash := os.NewFile(hashfd, "sha1")
681
+ // // Hash the contents of a file.
682
+ // f, _ := os.Open("/tmp/linux-4.10-rc7.tar.xz")
683
+ // b := make([]byte, 4096)
684
+ // for {
685
+ // n, err := f.Read(b)
686
+ // if err == io.EOF {
687
+ // break
688
+ // }
689
+ // unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)
690
+ // }
691
+ // hash.Read(b)
692
+ // fmt.Println(hex.EncodeToString(b))
693
+ // // Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5
694
+ //
695
+ // For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html.
696
+ type SockaddrALG struct {
697
+ Type string
698
+ Name string
699
+ Feature uint32
700
+ Mask uint32
701
+ raw RawSockaddrALG
702
+ }
703
+
704
+ func (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {
705
+ // Leave room for NUL byte terminator.
706
+ if len(sa.Type) > len(sa.raw.Type)-1 {
707
+ return nil, 0, EINVAL
708
+ }
709
+ if len(sa.Name) > len(sa.raw.Name)-1 {
710
+ return nil, 0, EINVAL
711
+ }
712
+
713
+ sa.raw.Family = AF_ALG
714
+ sa.raw.Feat = sa.Feature
715
+ sa.raw.Mask = sa.Mask
716
+
717
+ copy(sa.raw.Type[:], sa.Type)
718
+ copy(sa.raw.Name[:], sa.Name)
719
+
720
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil
721
+ }
722
+
723
+ // SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.
724
+ // SockaddrVM provides access to Linux VM sockets: a mechanism that enables
725
+ // bidirectional communication between a hypervisor and its guest virtual
726
+ // machines.
727
+ type SockaddrVM struct {
728
+ // CID and Port specify a context ID and port address for a VM socket.
729
+ // Guests have a unique CID, and hosts may have a well-known CID of:
730
+ // - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.
731
+ // - VMADDR_CID_LOCAL: refers to local communication (loopback).
732
+ // - VMADDR_CID_HOST: refers to other processes on the host.
733
+ CID uint32
734
+ Port uint32
735
+ Flags uint8
736
+ raw RawSockaddrVM
737
+ }
738
+
739
+ func (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {
740
+ sa.raw.Family = AF_VSOCK
741
+ sa.raw.Port = sa.Port
742
+ sa.raw.Cid = sa.CID
743
+ sa.raw.Flags = sa.Flags
744
+
745
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil
746
+ }
747
+
748
+ type SockaddrXDP struct {
749
+ Flags uint16
750
+ Ifindex uint32
751
+ QueueID uint32
752
+ SharedUmemFD uint32
753
+ raw RawSockaddrXDP
754
+ }
755
+
756
+ func (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {
757
+ sa.raw.Family = AF_XDP
758
+ sa.raw.Flags = sa.Flags
759
+ sa.raw.Ifindex = sa.Ifindex
760
+ sa.raw.Queue_id = sa.QueueID
761
+ sa.raw.Shared_umem_fd = sa.SharedUmemFD
762
+
763
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil
764
+ }
765
+
766
+ // This constant mirrors the #define of PX_PROTO_OE in
767
+ // linux/if_pppox.h. We're defining this by hand here instead of
768
+ // autogenerating through mkerrors.sh because including
769
+ // linux/if_pppox.h causes some declaration conflicts with other
770
+ // includes (linux/if_pppox.h includes linux/in.h, which conflicts
771
+ // with netinet/in.h). Given that we only need a single zero constant
772
+ // out of that file, it's cleaner to just define it by hand here.
773
+ const px_proto_oe = 0
774
+
775
+ type SockaddrPPPoE struct {
776
+ SID uint16
777
+ Remote []byte
778
+ Dev string
779
+ raw RawSockaddrPPPoX
780
+ }
781
+
782
+ func (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {
783
+ if len(sa.Remote) != 6 {
784
+ return nil, 0, EINVAL
785
+ }
786
+ if len(sa.Dev) > IFNAMSIZ-1 {
787
+ return nil, 0, EINVAL
788
+ }
789
+
790
+ *(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX
791
+ // This next field is in host-endian byte order. We can't use the
792
+ // same unsafe pointer cast as above, because this value is not
793
+ // 32-bit aligned and some architectures don't allow unaligned
794
+ // access.
795
+ //
796
+ // However, the value of px_proto_oe is 0, so we can use
797
+ // encoding/binary helpers to write the bytes without worrying
798
+ // about the ordering.
799
+ binary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)
800
+ // This field is deliberately big-endian, unlike the previous
801
+ // one. The kernel expects SID to be in network byte order.
802
+ binary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)
803
+ copy(sa.raw[8:14], sa.Remote)
804
+ for i := 14; i < 14+IFNAMSIZ; i++ {
805
+ sa.raw[i] = 0
806
+ }
807
+ copy(sa.raw[14:], sa.Dev)
808
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrPPPoX, nil
809
+ }
810
+
811
+ // SockaddrTIPC implements the Sockaddr interface for AF_TIPC type sockets.
812
+ // For more information on TIPC, see: http://tipc.sourceforge.net/.
813
+ type SockaddrTIPC struct {
814
+ // Scope is the publication scopes when binding service/service range.
815
+ // Should be set to TIPC_CLUSTER_SCOPE or TIPC_NODE_SCOPE.
816
+ Scope int
817
+
818
+ // Addr is the type of address used to manipulate a socket. Addr must be
819
+ // one of:
820
+ // - *TIPCSocketAddr: "id" variant in the C addr union
821
+ // - *TIPCServiceRange: "nameseq" variant in the C addr union
822
+ // - *TIPCServiceName: "name" variant in the C addr union
823
+ //
824
+ // If nil, EINVAL will be returned when the structure is used.
825
+ Addr TIPCAddr
826
+
827
+ raw RawSockaddrTIPC
828
+ }
829
+
830
+ // TIPCAddr is implemented by types that can be used as an address for
831
+ // SockaddrTIPC. It is only implemented by *TIPCSocketAddr, *TIPCServiceRange,
832
+ // and *TIPCServiceName.
833
+ type TIPCAddr interface {
834
+ tipcAddrtype() uint8
835
+ tipcAddr() [12]byte
836
+ }
837
+
838
+ func (sa *TIPCSocketAddr) tipcAddr() [12]byte {
839
+ var out [12]byte
840
+ copy(out[:], (*(*[unsafe.Sizeof(TIPCSocketAddr{})]byte)(unsafe.Pointer(sa)))[:])
841
+ return out
842
+ }
843
+
844
+ func (sa *TIPCSocketAddr) tipcAddrtype() uint8 { return TIPC_SOCKET_ADDR }
845
+
846
+ func (sa *TIPCServiceRange) tipcAddr() [12]byte {
847
+ var out [12]byte
848
+ copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceRange{})]byte)(unsafe.Pointer(sa)))[:])
849
+ return out
850
+ }
851
+
852
+ func (sa *TIPCServiceRange) tipcAddrtype() uint8 { return TIPC_SERVICE_RANGE }
853
+
854
+ func (sa *TIPCServiceName) tipcAddr() [12]byte {
855
+ var out [12]byte
856
+ copy(out[:], (*(*[unsafe.Sizeof(TIPCServiceName{})]byte)(unsafe.Pointer(sa)))[:])
857
+ return out
858
+ }
859
+
860
+ func (sa *TIPCServiceName) tipcAddrtype() uint8 { return TIPC_SERVICE_ADDR }
861
+
862
+ func (sa *SockaddrTIPC) sockaddr() (unsafe.Pointer, _Socklen, error) {
863
+ if sa.Addr == nil {
864
+ return nil, 0, EINVAL
865
+ }
866
+ sa.raw.Family = AF_TIPC
867
+ sa.raw.Scope = int8(sa.Scope)
868
+ sa.raw.Addrtype = sa.Addr.tipcAddrtype()
869
+ sa.raw.Addr = sa.Addr.tipcAddr()
870
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil
871
+ }
872
+
873
+ // SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets.
874
+ type SockaddrL2TPIP struct {
875
+ Addr [4]byte
876
+ ConnId uint32
877
+ raw RawSockaddrL2TPIP
878
+ }
879
+
880
+ func (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) {
881
+ sa.raw.Family = AF_INET
882
+ sa.raw.Conn_id = sa.ConnId
883
+ sa.raw.Addr = sa.Addr
884
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil
885
+ }
886
+
887
+ // SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets.
888
+ type SockaddrL2TPIP6 struct {
889
+ Addr [16]byte
890
+ ZoneId uint32
891
+ ConnId uint32
892
+ raw RawSockaddrL2TPIP6
893
+ }
894
+
895
+ func (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {
896
+ sa.raw.Family = AF_INET6
897
+ sa.raw.Conn_id = sa.ConnId
898
+ sa.raw.Scope_id = sa.ZoneId
899
+ sa.raw.Addr = sa.Addr
900
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil
901
+ }
902
+
903
+ // SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets.
904
+ type SockaddrIUCV struct {
905
+ UserID string
906
+ Name string
907
+ raw RawSockaddrIUCV
908
+ }
909
+
910
+ func (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {
911
+ sa.raw.Family = AF_IUCV
912
+ // These are EBCDIC encoded by the kernel, but we still need to pad them
913
+ // with blanks. Initializing with blanks allows the caller to feed in either
914
+ // a padded or an unpadded string.
915
+ for i := range 8 {
916
+ sa.raw.Nodeid[i] = ' '
917
+ sa.raw.User_id[i] = ' '
918
+ sa.raw.Name[i] = ' '
919
+ }
920
+ if len(sa.UserID) > 8 || len(sa.Name) > 8 {
921
+ return nil, 0, EINVAL
922
+ }
923
+ for i, b := range []byte(sa.UserID[:]) {
924
+ sa.raw.User_id[i] = int8(b)
925
+ }
926
+ for i, b := range []byte(sa.Name[:]) {
927
+ sa.raw.Name[i] = int8(b)
928
+ }
929
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil
930
+ }
931
+
932
+ type SockaddrNFC struct {
933
+ DeviceIdx uint32
934
+ TargetIdx uint32
935
+ NFCProtocol uint32
936
+ raw RawSockaddrNFC
937
+ }
938
+
939
+ func (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) {
940
+ sa.raw.Sa_family = AF_NFC
941
+ sa.raw.Dev_idx = sa.DeviceIdx
942
+ sa.raw.Target_idx = sa.TargetIdx
943
+ sa.raw.Nfc_protocol = sa.NFCProtocol
944
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil
945
+ }
946
+
947
+ type SockaddrNFCLLCP struct {
948
+ DeviceIdx uint32
949
+ TargetIdx uint32
950
+ NFCProtocol uint32
951
+ DestinationSAP uint8
952
+ SourceSAP uint8
953
+ ServiceName string
954
+ raw RawSockaddrNFCLLCP
955
+ }
956
+
957
+ func (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) {
958
+ sa.raw.Sa_family = AF_NFC
959
+ sa.raw.Dev_idx = sa.DeviceIdx
960
+ sa.raw.Target_idx = sa.TargetIdx
961
+ sa.raw.Nfc_protocol = sa.NFCProtocol
962
+ sa.raw.Dsap = sa.DestinationSAP
963
+ sa.raw.Ssap = sa.SourceSAP
964
+ if len(sa.ServiceName) > len(sa.raw.Service_name) {
965
+ return nil, 0, EINVAL
966
+ }
967
+ copy(sa.raw.Service_name[:], sa.ServiceName)
968
+ sa.raw.SetServiceNameLen(len(sa.ServiceName))
969
+ return unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil
970
+ }
971
+
972
+ var socketProtocol = func(fd int) (int, error) {
973
+ return GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)
974
+ }
975
+
976
+ func anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {
977
+ switch rsa.Addr.Family {
978
+ case AF_NETLINK:
979
+ pp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))
980
+ sa := new(SockaddrNetlink)
981
+ sa.Family = pp.Family
982
+ sa.Pad = pp.Pad
983
+ sa.Pid = pp.Pid
984
+ sa.Groups = pp.Groups
985
+ return sa, nil
986
+
987
+ case AF_PACKET:
988
+ pp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))
989
+ sa := new(SockaddrLinklayer)
990
+ sa.Protocol = pp.Protocol
991
+ sa.Ifindex = int(pp.Ifindex)
992
+ sa.Hatype = pp.Hatype
993
+ sa.Pkttype = pp.Pkttype
994
+ sa.Halen = pp.Halen
995
+ sa.Addr = pp.Addr
996
+ return sa, nil
997
+
998
+ case AF_UNIX:
999
+ pp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))
1000
+ sa := new(SockaddrUnix)
1001
+ if pp.Path[0] == 0 {
1002
+ // "Abstract" Unix domain socket.
1003
+ // Rewrite leading NUL as @ for textual display.
1004
+ // (This is the standard convention.)
1005
+ // Not friendly to overwrite in place,
1006
+ // but the callers below don't care.
1007
+ pp.Path[0] = '@'
1008
+ }
1009
+
1010
+ // Assume path ends at NUL.
1011
+ // This is not technically the Linux semantics for
1012
+ // abstract Unix domain sockets--they are supposed
1013
+ // to be uninterpreted fixed-size binary blobs--but
1014
+ // everyone uses this convention.
1015
+ n := 0
1016
+ for n < len(pp.Path) && pp.Path[n] != 0 {
1017
+ n++
1018
+ }
1019
+ sa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))
1020
+ return sa, nil
1021
+
1022
+ case AF_INET:
1023
+ proto, err := socketProtocol(fd)
1024
+ if err != nil {
1025
+ return nil, err
1026
+ }
1027
+
1028
+ switch proto {
1029
+ case IPPROTO_L2TP:
1030
+ pp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa))
1031
+ sa := new(SockaddrL2TPIP)
1032
+ sa.ConnId = pp.Conn_id
1033
+ sa.Addr = pp.Addr
1034
+ return sa, nil
1035
+ default:
1036
+ pp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))
1037
+ sa := new(SockaddrInet4)
1038
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
1039
+ sa.Port = int(p[0])<<8 + int(p[1])
1040
+ sa.Addr = pp.Addr
1041
+ return sa, nil
1042
+ }
1043
+
1044
+ case AF_INET6:
1045
+ proto, err := socketProtocol(fd)
1046
+ if err != nil {
1047
+ return nil, err
1048
+ }
1049
+
1050
+ switch proto {
1051
+ case IPPROTO_L2TP:
1052
+ pp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa))
1053
+ sa := new(SockaddrL2TPIP6)
1054
+ sa.ConnId = pp.Conn_id
1055
+ sa.ZoneId = pp.Scope_id
1056
+ sa.Addr = pp.Addr
1057
+ return sa, nil
1058
+ default:
1059
+ pp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))
1060
+ sa := new(SockaddrInet6)
1061
+ p := (*[2]byte)(unsafe.Pointer(&pp.Port))
1062
+ sa.Port = int(p[0])<<8 + int(p[1])
1063
+ sa.ZoneId = pp.Scope_id
1064
+ sa.Addr = pp.Addr
1065
+ return sa, nil
1066
+ }
1067
+
1068
+ case AF_VSOCK:
1069
+ pp := (*RawSockaddrVM)(unsafe.Pointer(rsa))
1070
+ sa := &SockaddrVM{
1071
+ CID: pp.Cid,
1072
+ Port: pp.Port,
1073
+ Flags: pp.Flags,
1074
+ }
1075
+ return sa, nil
1076
+ case AF_BLUETOOTH:
1077
+ proto, err := socketProtocol(fd)
1078
+ if err != nil {
1079
+ return nil, err
1080
+ }
1081
+ // only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections
1082
+ switch proto {
1083
+ case BTPROTO_L2CAP:
1084
+ pp := (*RawSockaddrL2)(unsafe.Pointer(rsa))
1085
+ sa := &SockaddrL2{
1086
+ PSM: pp.Psm,
1087
+ CID: pp.Cid,
1088
+ Addr: pp.Bdaddr,
1089
+ AddrType: pp.Bdaddr_type,
1090
+ }
1091
+ return sa, nil
1092
+ case BTPROTO_RFCOMM:
1093
+ pp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))
1094
+ sa := &SockaddrRFCOMM{
1095
+ Channel: pp.Channel,
1096
+ Addr: pp.Bdaddr,
1097
+ }
1098
+ return sa, nil
1099
+ }
1100
+ case AF_XDP:
1101
+ pp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))
1102
+ sa := &SockaddrXDP{
1103
+ Flags: pp.Flags,
1104
+ Ifindex: pp.Ifindex,
1105
+ QueueID: pp.Queue_id,
1106
+ SharedUmemFD: pp.Shared_umem_fd,
1107
+ }
1108
+ return sa, nil
1109
+ case AF_PPPOX:
1110
+ pp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))
1111
+ if binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {
1112
+ return nil, EINVAL
1113
+ }
1114
+ sa := &SockaddrPPPoE{
1115
+ SID: binary.BigEndian.Uint16(pp[6:8]),
1116
+ Remote: pp[8:14],
1117
+ }
1118
+ for i := 14; i < 14+IFNAMSIZ; i++ {
1119
+ if pp[i] == 0 {
1120
+ sa.Dev = string(pp[14:i])
1121
+ break
1122
+ }
1123
+ }
1124
+ return sa, nil
1125
+ case AF_TIPC:
1126
+ pp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa))
1127
+
1128
+ sa := &SockaddrTIPC{
1129
+ Scope: int(pp.Scope),
1130
+ }
1131
+
1132
+ // Determine which union variant is present in pp.Addr by checking
1133
+ // pp.Addrtype.
1134
+ switch pp.Addrtype {
1135
+ case TIPC_SERVICE_RANGE:
1136
+ sa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr))
1137
+ case TIPC_SERVICE_ADDR:
1138
+ sa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr))
1139
+ case TIPC_SOCKET_ADDR:
1140
+ sa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr))
1141
+ default:
1142
+ return nil, EINVAL
1143
+ }
1144
+
1145
+ return sa, nil
1146
+ case AF_IUCV:
1147
+ pp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa))
1148
+
1149
+ var user [8]byte
1150
+ var name [8]byte
1151
+
1152
+ for i := range 8 {
1153
+ user[i] = byte(pp.User_id[i])
1154
+ name[i] = byte(pp.Name[i])
1155
+ }
1156
+
1157
+ sa := &SockaddrIUCV{
1158
+ UserID: string(user[:]),
1159
+ Name: string(name[:]),
1160
+ }
1161
+ return sa, nil
1162
+
1163
+ case AF_CAN:
1164
+ proto, err := socketProtocol(fd)
1165
+ if err != nil {
1166
+ return nil, err
1167
+ }
1168
+
1169
+ pp := (*RawSockaddrCAN)(unsafe.Pointer(rsa))
1170
+
1171
+ switch proto {
1172
+ case CAN_J1939:
1173
+ sa := &SockaddrCANJ1939{
1174
+ Ifindex: int(pp.Ifindex),
1175
+ }
1176
+ name := (*[8]byte)(unsafe.Pointer(&sa.Name))
1177
+ for i := range 8 {
1178
+ name[i] = pp.Addr[i]
1179
+ }
1180
+ pgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))
1181
+ for i := range 4 {
1182
+ pgn[i] = pp.Addr[i+8]
1183
+ }
1184
+ addr := (*[1]byte)(unsafe.Pointer(&sa.Addr))
1185
+ addr[0] = pp.Addr[12]
1186
+ return sa, nil
1187
+ default:
1188
+ sa := &SockaddrCAN{
1189
+ Ifindex: int(pp.Ifindex),
1190
+ }
1191
+ rx := (*[4]byte)(unsafe.Pointer(&sa.RxID))
1192
+ for i := range 4 {
1193
+ rx[i] = pp.Addr[i]
1194
+ }
1195
+ tx := (*[4]byte)(unsafe.Pointer(&sa.TxID))
1196
+ for i := range 4 {
1197
+ tx[i] = pp.Addr[i+4]
1198
+ }
1199
+ return sa, nil
1200
+ }
1201
+ case AF_NFC:
1202
+ proto, err := socketProtocol(fd)
1203
+ if err != nil {
1204
+ return nil, err
1205
+ }
1206
+ switch proto {
1207
+ case NFC_SOCKPROTO_RAW:
1208
+ pp := (*RawSockaddrNFC)(unsafe.Pointer(rsa))
1209
+ sa := &SockaddrNFC{
1210
+ DeviceIdx: pp.Dev_idx,
1211
+ TargetIdx: pp.Target_idx,
1212
+ NFCProtocol: pp.Nfc_protocol,
1213
+ }
1214
+ return sa, nil
1215
+ case NFC_SOCKPROTO_LLCP:
1216
+ pp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa))
1217
+ if uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) {
1218
+ return nil, EINVAL
1219
+ }
1220
+ sa := &SockaddrNFCLLCP{
1221
+ DeviceIdx: pp.Dev_idx,
1222
+ TargetIdx: pp.Target_idx,
1223
+ NFCProtocol: pp.Nfc_protocol,
1224
+ DestinationSAP: pp.Dsap,
1225
+ SourceSAP: pp.Ssap,
1226
+ ServiceName: string(pp.Service_name[:pp.Service_name_len]),
1227
+ }
1228
+ return sa, nil
1229
+ default:
1230
+ return nil, EINVAL
1231
+ }
1232
+ }
1233
+ return nil, EAFNOSUPPORT
1234
+ }
1235
+
1236
+ func Accept(fd int) (nfd int, sa Sockaddr, err error) {
1237
+ var rsa RawSockaddrAny
1238
+ var len _Socklen = SizeofSockaddrAny
1239
+ nfd, err = accept4(fd, &rsa, &len, 0)
1240
+ if err != nil {
1241
+ return
1242
+ }
1243
+ sa, err = anyToSockaddr(fd, &rsa)
1244
+ if err != nil {
1245
+ Close(nfd)
1246
+ nfd = 0
1247
+ }
1248
+ return
1249
+ }
1250
+
1251
+ func Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {
1252
+ var rsa RawSockaddrAny
1253
+ var len _Socklen = SizeofSockaddrAny
1254
+ nfd, err = accept4(fd, &rsa, &len, flags)
1255
+ if err != nil {
1256
+ return
1257
+ }
1258
+ if len > SizeofSockaddrAny {
1259
+ panic("RawSockaddrAny too small")
1260
+ }
1261
+ sa, err = anyToSockaddr(fd, &rsa)
1262
+ if err != nil {
1263
+ Close(nfd)
1264
+ nfd = 0
1265
+ }
1266
+ return
1267
+ }
1268
+
1269
+ func Getsockname(fd int) (sa Sockaddr, err error) {
1270
+ var rsa RawSockaddrAny
1271
+ var len _Socklen = SizeofSockaddrAny
1272
+ if err = getsockname(fd, &rsa, &len); err != nil {
1273
+ return
1274
+ }
1275
+ return anyToSockaddr(fd, &rsa)
1276
+ }
1277
+
1278
+ func GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {
1279
+ var value IPMreqn
1280
+ vallen := _Socklen(SizeofIPMreqn)
1281
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
1282
+ return &value, err
1283
+ }
1284
+
1285
+ func GetsockoptUcred(fd, level, opt int) (*Ucred, error) {
1286
+ var value Ucred
1287
+ vallen := _Socklen(SizeofUcred)
1288
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
1289
+ return &value, err
1290
+ }
1291
+
1292
+ func GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {
1293
+ var value TCPInfo
1294
+ vallen := _Socklen(SizeofTCPInfo)
1295
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
1296
+ return &value, err
1297
+ }
1298
+
1299
+ // GetsockoptTCPCCVegasInfo returns algorithm specific congestion control information for a socket using the "vegas"
1300
+ // algorithm.
1301
+ //
1302
+ // The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:
1303
+ //
1304
+ // algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)
1305
+ func GetsockoptTCPCCVegasInfo(fd, level, opt int) (*TCPVegasInfo, error) {
1306
+ var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment
1307
+ vallen := _Socklen(SizeofTCPCCInfo)
1308
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
1309
+ out := (*TCPVegasInfo)(unsafe.Pointer(&value[0]))
1310
+ return out, err
1311
+ }
1312
+
1313
+ // GetsockoptTCPCCDCTCPInfo returns algorithm specific congestion control information for a socket using the "dctp"
1314
+ // algorithm.
1315
+ //
1316
+ // The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:
1317
+ //
1318
+ // algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)
1319
+ func GetsockoptTCPCCDCTCPInfo(fd, level, opt int) (*TCPDCTCPInfo, error) {
1320
+ var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment
1321
+ vallen := _Socklen(SizeofTCPCCInfo)
1322
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
1323
+ out := (*TCPDCTCPInfo)(unsafe.Pointer(&value[0]))
1324
+ return out, err
1325
+ }
1326
+
1327
+ // GetsockoptTCPCCBBRInfo returns algorithm specific congestion control information for a socket using the "bbr"
1328
+ // algorithm.
1329
+ //
1330
+ // The socket's congestion control algorighm can be retrieved via [GetsockoptString] with the [TCP_CONGESTION] option:
1331
+ //
1332
+ // algo, err := unix.GetsockoptString(fd, unix.IPPROTO_TCP, unix.TCP_CONGESTION)
1333
+ func GetsockoptTCPCCBBRInfo(fd, level, opt int) (*TCPBBRInfo, error) {
1334
+ var value [SizeofTCPCCInfo / 4]uint32 // ensure proper alignment
1335
+ vallen := _Socklen(SizeofTCPCCInfo)
1336
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)
1337
+ out := (*TCPBBRInfo)(unsafe.Pointer(&value[0]))
1338
+ return out, err
1339
+ }
1340
+
1341
+ // GetsockoptString returns the string value of the socket option opt for the
1342
+ // socket associated with fd at the given socket level.
1343
+ func GetsockoptString(fd, level, opt int) (string, error) {
1344
+ buf := make([]byte, 256)
1345
+ vallen := _Socklen(len(buf))
1346
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
1347
+ if err != nil {
1348
+ if err == ERANGE {
1349
+ buf = make([]byte, vallen)
1350
+ err = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)
1351
+ }
1352
+ if err != nil {
1353
+ return "", err
1354
+ }
1355
+ }
1356
+ return ByteSliceToString(buf[:vallen]), nil
1357
+ }
1358
+
1359
+ func GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {
1360
+ var value TpacketStats
1361
+ vallen := _Socklen(SizeofTpacketStats)
1362
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
1363
+ return &value, err
1364
+ }
1365
+
1366
+ func GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {
1367
+ var value TpacketStatsV3
1368
+ vallen := _Socklen(SizeofTpacketStatsV3)
1369
+ err := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)
1370
+ return &value, err
1371
+ }
1372
+
1373
+ func SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {
1374
+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
1375
+ }
1376
+
1377
+ func SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error {
1378
+ return setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))
1379
+ }
1380
+
1381
+ // SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a
1382
+ // socket to filter incoming packets. See 'man 7 socket' for usage information.
1383
+ func SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error {
1384
+ return setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog))
1385
+ }
1386
+
1387
+ func SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {
1388
+ var p unsafe.Pointer
1389
+ if len(filter) > 0 {
1390
+ p = unsafe.Pointer(&filter[0])
1391
+ }
1392
+ return setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))
1393
+ }
1394
+
1395
+ func SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {
1396
+ return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
1397
+ }
1398
+
1399
+ func SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {
1400
+ return setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))
1401
+ }
1402
+
1403
+ func SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) {
1404
+ if len(o) == 0 {
1405
+ return EINVAL
1406
+ }
1407
+ return setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o)))
1408
+ }
1409
+
1410
+ func SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error {
1411
+ return setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s))
1412
+ }
1413
+
1414
+ // Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)
1415
+
1416
+ // KeyctlInt calls keyctl commands in which each argument is an int.
1417
+ // These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK,
1418
+ // KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT,
1419
+ // KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT,
1420
+ // KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT.
1421
+ //sys KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL
1422
+
1423
+ // KeyctlBuffer calls keyctl commands in which the third and fourth
1424
+ // arguments are a buffer and its length, respectively.
1425
+ // These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE.
1426
+ //sys KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL
1427
+
1428
+ // KeyctlString calls keyctl commands which return a string.
1429
+ // These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY.
1430
+ func KeyctlString(cmd int, id int) (string, error) {
1431
+ // We must loop as the string data may change in between the syscalls.
1432
+ // We could allocate a large buffer here to reduce the chance that the
1433
+ // syscall needs to be called twice; however, this is unnecessary as
1434
+ // the performance loss is negligible.
1435
+ var buffer []byte
1436
+ for {
1437
+ // Try to fill the buffer with data
1438
+ length, err := KeyctlBuffer(cmd, id, buffer, 0)
1439
+ if err != nil {
1440
+ return "", err
1441
+ }
1442
+
1443
+ // Check if the data was written
1444
+ if length <= len(buffer) {
1445
+ // Exclude the null terminator
1446
+ return string(buffer[:length-1]), nil
1447
+ }
1448
+
1449
+ // Make a bigger buffer if needed
1450
+ buffer = make([]byte, length)
1451
+ }
1452
+ }
1453
+
1454
+ // Keyctl commands with special signatures.
1455
+
1456
+ // KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command.
1457
+ // See the full documentation at:
1458
+ // http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html
1459
+ func KeyctlGetKeyringID(id int, create bool) (ringid int, err error) {
1460
+ createInt := 0
1461
+ if create {
1462
+ createInt = 1
1463
+ }
1464
+ return KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0)
1465
+ }
1466
+
1467
+ // KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the
1468
+ // key handle permission mask as described in the "keyctl setperm" section of
1469
+ // http://man7.org/linux/man-pages/man1/keyctl.1.html.
1470
+ // See the full documentation at:
1471
+ // http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html
1472
+ func KeyctlSetperm(id int, perm uint32) error {
1473
+ _, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0)
1474
+ return err
1475
+ }
1476
+
1477
+ //sys keyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL
1478
+
1479
+ // KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command.
1480
+ // See the full documentation at:
1481
+ // http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html
1482
+ func KeyctlJoinSessionKeyring(name string) (ringid int, err error) {
1483
+ return keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name)
1484
+ }
1485
+
1486
+ //sys keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL
1487
+
1488
+ // KeyctlSearch implements the KEYCTL_SEARCH command.
1489
+ // See the full documentation at:
1490
+ // http://man7.org/linux/man-pages/man3/keyctl_search.3.html
1491
+ func KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) {
1492
+ return keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid)
1493
+ }
1494
+
1495
+ //sys keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL
1496
+
1497
+ // KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This
1498
+ // command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice
1499
+ // of Iovec (each of which represents a buffer) instead of a single buffer.
1500
+ // See the full documentation at:
1501
+ // http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html
1502
+ func KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error {
1503
+ return keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid)
1504
+ }
1505
+
1506
+ //sys keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL
1507
+
1508
+ // KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command
1509
+ // computes a Diffie-Hellman shared secret based on the provide params. The
1510
+ // secret is written to the provided buffer and the returned size is the number
1511
+ // of bytes written (returning an error if there is insufficient space in the
1512
+ // buffer). If a nil buffer is passed in, this function returns the minimum
1513
+ // buffer length needed to store the appropriate data. Note that this differs
1514
+ // from KEYCTL_READ's behavior which always returns the requested payload size.
1515
+ // See the full documentation at:
1516
+ // http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html
1517
+ func KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) {
1518
+ return keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)
1519
+ }
1520
+
1521
+ // KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This
1522
+ // command limits the set of keys that can be linked to the keyring, regardless
1523
+ // of keyring permissions. The command requires the "setattr" permission.
1524
+ //
1525
+ // When called with an empty keyType the command locks the keyring, preventing
1526
+ // any further keys from being linked to the keyring.
1527
+ //
1528
+ // The "asymmetric" keyType defines restrictions requiring key payloads to be
1529
+ // DER encoded X.509 certificates signed by keys in another keyring. Restrictions
1530
+ // for "asymmetric" include "builtin_trusted", "builtin_and_secondary_trusted",
1531
+ // "key_or_keyring:<key>", and "key_or_keyring:<key>:chain".
1532
+ //
1533
+ // As of Linux 4.12, only the "asymmetric" keyType defines type-specific
1534
+ // restrictions.
1535
+ //
1536
+ // See the full documentation at:
1537
+ // http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html
1538
+ // http://man7.org/linux/man-pages/man2/keyctl.2.html
1539
+ func KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error {
1540
+ if keyType == "" {
1541
+ return keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid)
1542
+ }
1543
+ return keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction)
1544
+ }
1545
+
1546
+ //sys keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL
1547
+ //sys keyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL
1548
+
1549
+ func recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {
1550
+ var msg Msghdr
1551
+ msg.Name = (*byte)(unsafe.Pointer(rsa))
1552
+ msg.Namelen = uint32(SizeofSockaddrAny)
1553
+ var dummy byte
1554
+ if len(oob) > 0 {
1555
+ if emptyIovecs(iov) {
1556
+ var sockType int
1557
+ sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
1558
+ if err != nil {
1559
+ return
1560
+ }
1561
+ // receive at least one normal byte
1562
+ if sockType != SOCK_DGRAM {
1563
+ var iova [1]Iovec
1564
+ iova[0].Base = &dummy
1565
+ iova[0].SetLen(1)
1566
+ iov = iova[:]
1567
+ }
1568
+ }
1569
+ msg.Control = &oob[0]
1570
+ msg.SetControllen(len(oob))
1571
+ }
1572
+ if len(iov) > 0 {
1573
+ msg.Iov = &iov[0]
1574
+ msg.SetIovlen(len(iov))
1575
+ }
1576
+ if n, err = recvmsg(fd, &msg, flags); err != nil {
1577
+ return
1578
+ }
1579
+ oobn = int(msg.Controllen)
1580
+ recvflags = int(msg.Flags)
1581
+ return
1582
+ }
1583
+
1584
+ func sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {
1585
+ var msg Msghdr
1586
+ msg.Name = (*byte)(ptr)
1587
+ msg.Namelen = uint32(salen)
1588
+ var dummy byte
1589
+ var empty bool
1590
+ if len(oob) > 0 {
1591
+ empty = emptyIovecs(iov)
1592
+ if empty {
1593
+ var sockType int
1594
+ sockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)
1595
+ if err != nil {
1596
+ return 0, err
1597
+ }
1598
+ // send at least one normal byte
1599
+ if sockType != SOCK_DGRAM {
1600
+ var iova [1]Iovec
1601
+ iova[0].Base = &dummy
1602
+ iova[0].SetLen(1)
1603
+ iov = iova[:]
1604
+ }
1605
+ }
1606
+ msg.Control = &oob[0]
1607
+ msg.SetControllen(len(oob))
1608
+ }
1609
+ if len(iov) > 0 {
1610
+ msg.Iov = &iov[0]
1611
+ msg.SetIovlen(len(iov))
1612
+ }
1613
+ if n, err = sendmsg(fd, &msg, flags); err != nil {
1614
+ return 0, err
1615
+ }
1616
+ if len(oob) > 0 && empty {
1617
+ n = 0
1618
+ }
1619
+ return n, nil
1620
+ }
1621
+
1622
+ // BindToDevice binds the socket associated with fd to device.
1623
+ func BindToDevice(fd int, device string) (err error) {
1624
+ return SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)
1625
+ }
1626
+
1627
+ //sys ptrace(request int, pid int, addr uintptr, data uintptr) (err error)
1628
+ //sys ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE
1629
+
1630
+ func ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {
1631
+ // The peek requests are machine-size oriented, so we wrap it
1632
+ // to retrieve arbitrary-length data.
1633
+
1634
+ // The ptrace syscall differs from glibc's ptrace.
1635
+ // Peeks returns the word in *data, not as the return value.
1636
+
1637
+ var buf [SizeofPtr]byte
1638
+
1639
+ // Leading edge. PEEKTEXT/PEEKDATA don't require aligned
1640
+ // access (PEEKUSER warns that it might), but if we don't
1641
+ // align our reads, we might straddle an unmapped page
1642
+ // boundary and not get the bytes leading up to the page
1643
+ // boundary.
1644
+ n := 0
1645
+ if addr%SizeofPtr != 0 {
1646
+ err = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))
1647
+ if err != nil {
1648
+ return 0, err
1649
+ }
1650
+ n += copy(out, buf[addr%SizeofPtr:])
1651
+ out = out[n:]
1652
+ }
1653
+
1654
+ // Remainder.
1655
+ for len(out) > 0 {
1656
+ // We use an internal buffer to guarantee alignment.
1657
+ // It's not documented if this is necessary, but we're paranoid.
1658
+ err = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))
1659
+ if err != nil {
1660
+ return n, err
1661
+ }
1662
+ copied := copy(out, buf[0:])
1663
+ n += copied
1664
+ out = out[copied:]
1665
+ }
1666
+
1667
+ return n, nil
1668
+ }
1669
+
1670
+ func PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {
1671
+ return ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)
1672
+ }
1673
+
1674
+ func PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {
1675
+ return ptracePeek(PTRACE_PEEKDATA, pid, addr, out)
1676
+ }
1677
+
1678
+ func PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) {
1679
+ return ptracePeek(PTRACE_PEEKUSR, pid, addr, out)
1680
+ }
1681
+
1682
+ func ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {
1683
+ // As for ptracePeek, we need to align our accesses to deal
1684
+ // with the possibility of straddling an invalid page.
1685
+
1686
+ // Leading edge.
1687
+ n := 0
1688
+ if addr%SizeofPtr != 0 {
1689
+ var buf [SizeofPtr]byte
1690
+ err = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))
1691
+ if err != nil {
1692
+ return 0, err
1693
+ }
1694
+ n += copy(buf[addr%SizeofPtr:], data)
1695
+ word := *((*uintptr)(unsafe.Pointer(&buf[0])))
1696
+ err = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)
1697
+ if err != nil {
1698
+ return 0, err
1699
+ }
1700
+ data = data[n:]
1701
+ }
1702
+
1703
+ // Interior.
1704
+ for len(data) > SizeofPtr {
1705
+ word := *((*uintptr)(unsafe.Pointer(&data[0])))
1706
+ err = ptrace(pokeReq, pid, addr+uintptr(n), word)
1707
+ if err != nil {
1708
+ return n, err
1709
+ }
1710
+ n += SizeofPtr
1711
+ data = data[SizeofPtr:]
1712
+ }
1713
+
1714
+ // Trailing edge.
1715
+ if len(data) > 0 {
1716
+ var buf [SizeofPtr]byte
1717
+ err = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))
1718
+ if err != nil {
1719
+ return n, err
1720
+ }
1721
+ copy(buf[0:], data)
1722
+ word := *((*uintptr)(unsafe.Pointer(&buf[0])))
1723
+ err = ptrace(pokeReq, pid, addr+uintptr(n), word)
1724
+ if err != nil {
1725
+ return n, err
1726
+ }
1727
+ n += len(data)
1728
+ }
1729
+
1730
+ return n, nil
1731
+ }
1732
+
1733
+ func PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {
1734
+ return ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)
1735
+ }
1736
+
1737
+ func PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {
1738
+ return ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)
1739
+ }
1740
+
1741
+ func PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {
1742
+ return ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)
1743
+ }
1744
+
1745
+ // elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so
1746
+ // x/sys/unix doesn't need to depend on debug/elf and thus
1747
+ // compress/zlib, debug/dwarf, and other packages.
1748
+ const elfNT_PRSTATUS = 1
1749
+
1750
+ func PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {
1751
+ var iov Iovec
1752
+ iov.Base = (*byte)(unsafe.Pointer(regsout))
1753
+ iov.SetLen(int(unsafe.Sizeof(*regsout)))
1754
+ return ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))
1755
+ }
1756
+
1757
+ func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
1758
+ var iov Iovec
1759
+ iov.Base = (*byte)(unsafe.Pointer(regs))
1760
+ iov.SetLen(int(unsafe.Sizeof(*regs)))
1761
+ return ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))
1762
+ }
1763
+
1764
+ func PtraceSetOptions(pid int, options int) (err error) {
1765
+ return ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))
1766
+ }
1767
+
1768
+ func PtraceGetEventMsg(pid int) (msg uint, err error) {
1769
+ var data _C_long
1770
+ err = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data))
1771
+ msg = uint(data)
1772
+ return
1773
+ }
1774
+
1775
+ func PtraceCont(pid int, signal int) (err error) {
1776
+ return ptrace(PTRACE_CONT, pid, 0, uintptr(signal))
1777
+ }
1778
+
1779
+ func PtraceSyscall(pid int, signal int) (err error) {
1780
+ return ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))
1781
+ }
1782
+
1783
+ func PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }
1784
+
1785
+ func PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) }
1786
+
1787
+ func PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }
1788
+
1789
+ func PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) }
1790
+
1791
+ func PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }
1792
+
1793
+ //sys reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)
1794
+
1795
+ func Reboot(cmd int) (err error) {
1796
+ return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, "")
1797
+ }
1798
+
1799
+ func direntIno(buf []byte) (uint64, bool) {
1800
+ return readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))
1801
+ }
1802
+
1803
+ func direntReclen(buf []byte) (uint64, bool) {
1804
+ return readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))
1805
+ }
1806
+
1807
+ func direntNamlen(buf []byte) (uint64, bool) {
1808
+ reclen, ok := direntReclen(buf)
1809
+ if !ok {
1810
+ return 0, false
1811
+ }
1812
+ return reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true
1813
+ }
1814
+
1815
+ //sys mount(source string, target string, fstype string, flags uintptr, data *byte) (err error)
1816
+
1817
+ func Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {
1818
+ // Certain file systems get rather angry and EINVAL if you give
1819
+ // them an empty string of data, rather than NULL.
1820
+ if data == "" {
1821
+ return mount(source, target, fstype, flags, nil)
1822
+ }
1823
+ datap, err := BytePtrFromString(data)
1824
+ if err != nil {
1825
+ return err
1826
+ }
1827
+ return mount(source, target, fstype, flags, datap)
1828
+ }
1829
+
1830
+ //sys mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR
1831
+
1832
+ // MountSetattr is a wrapper for mount_setattr(2).
1833
+ // https://man7.org/linux/man-pages/man2/mount_setattr.2.html
1834
+ //
1835
+ // Requires kernel >= 5.12.
1836
+ func MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error {
1837
+ return mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr))
1838
+ }
1839
+
1840
+ func Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {
1841
+ if raceenabled {
1842
+ raceReleaseMerge(unsafe.Pointer(&ioSync))
1843
+ }
1844
+ return sendfile(outfd, infd, offset, count)
1845
+ }
1846
+
1847
+ // Sendto
1848
+ // Recvfrom
1849
+ // Socketpair
1850
+
1851
+ /*
1852
+ * Direct access
1853
+ */
1854
+ //sys Acct(path string) (err error)
1855
+ //sys AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)
1856
+ //sys Adjtimex(buf *Timex) (state int, err error)
1857
+ //sysnb Capget(hdr *CapUserHeader, data *CapUserData) (err error)
1858
+ //sysnb Capset(hdr *CapUserHeader, data *CapUserData) (err error)
1859
+ //sys Chdir(path string) (err error)
1860
+ //sys Chroot(path string) (err error)
1861
+ //sys ClockAdjtime(clockid int32, buf *Timex) (state int, err error)
1862
+ //sys ClockGetres(clockid int32, res *Timespec) (err error)
1863
+ //sys ClockGettime(clockid int32, time *Timespec) (err error)
1864
+ //sys ClockSettime(clockid int32, time *Timespec) (err error)
1865
+ //sys ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)
1866
+ //sys Close(fd int) (err error)
1867
+ //sys CloseRange(first uint, last uint, flags uint) (err error)
1868
+ //sys CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)
1869
+ //sys DeleteModule(name string, flags int) (err error)
1870
+ //sys Dup(oldfd int) (fd int, err error)
1871
+
1872
+ func Dup2(oldfd, newfd int) error {
1873
+ return Dup3(oldfd, newfd, 0)
1874
+ }
1875
+
1876
+ //sys Dup3(oldfd int, newfd int, flags int) (err error)
1877
+ //sysnb EpollCreate1(flag int) (fd int, err error)
1878
+ //sysnb EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)
1879
+ //sys Eventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2
1880
+ //sys Exit(code int) = SYS_EXIT_GROUP
1881
+ //sys Fallocate(fd int, mode uint32, off int64, len int64) (err error)
1882
+ //sys Fchdir(fd int) (err error)
1883
+ //sys Fchmod(fd int, mode uint32) (err error)
1884
+ //sys Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error)
1885
+ //sys Fdatasync(fd int) (err error)
1886
+ //sys Fgetxattr(fd int, attr string, dest []byte) (sz int, err error)
1887
+ //sys FinitModule(fd int, params string, flags int) (err error)
1888
+ //sys Flistxattr(fd int, dest []byte) (sz int, err error)
1889
+ //sys Flock(fd int, how int) (err error)
1890
+ //sys Fremovexattr(fd int, attr string) (err error)
1891
+ //sys Fsetxattr(fd int, attr string, dest []byte, flags int) (err error)
1892
+ //sys Fsync(fd int) (err error)
1893
+ //sys Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error)
1894
+ //sys Fsopen(fsName string, flags int) (fd int, err error)
1895
+ //sys Fspick(dirfd int, pathName string, flags int) (fd int, err error)
1896
+
1897
+ //sys fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error)
1898
+
1899
+ func fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) {
1900
+ var keyp *byte
1901
+ if keyp, err = BytePtrFromString(key); err != nil {
1902
+ return
1903
+ }
1904
+ return fsconfig(fd, cmd, keyp, value, aux)
1905
+ }
1906
+
1907
+ // FsconfigSetFlag is equivalent to fsconfig(2) called
1908
+ // with cmd == FSCONFIG_SET_FLAG.
1909
+ //
1910
+ // fd is the filesystem context to act upon.
1911
+ // key the parameter key to set.
1912
+ func FsconfigSetFlag(fd int, key string) (err error) {
1913
+ return fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0)
1914
+ }
1915
+
1916
+ // FsconfigSetString is equivalent to fsconfig(2) called
1917
+ // with cmd == FSCONFIG_SET_STRING.
1918
+ //
1919
+ // fd is the filesystem context to act upon.
1920
+ // key the parameter key to set.
1921
+ // value is the parameter value to set.
1922
+ func FsconfigSetString(fd int, key string, value string) (err error) {
1923
+ var valuep *byte
1924
+ if valuep, err = BytePtrFromString(value); err != nil {
1925
+ return
1926
+ }
1927
+ return fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0)
1928
+ }
1929
+
1930
+ // FsconfigSetBinary is equivalent to fsconfig(2) called
1931
+ // with cmd == FSCONFIG_SET_BINARY.
1932
+ //
1933
+ // fd is the filesystem context to act upon.
1934
+ // key the parameter key to set.
1935
+ // value is the parameter value to set.
1936
+ func FsconfigSetBinary(fd int, key string, value []byte) (err error) {
1937
+ if len(value) == 0 {
1938
+ return EINVAL
1939
+ }
1940
+ return fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value))
1941
+ }
1942
+
1943
+ // FsconfigSetPath is equivalent to fsconfig(2) called
1944
+ // with cmd == FSCONFIG_SET_PATH.
1945
+ //
1946
+ // fd is the filesystem context to act upon.
1947
+ // key the parameter key to set.
1948
+ // path is a non-empty path for specified key.
1949
+ // atfd is a file descriptor at which to start lookup from or AT_FDCWD.
1950
+ func FsconfigSetPath(fd int, key string, path string, atfd int) (err error) {
1951
+ var valuep *byte
1952
+ if valuep, err = BytePtrFromString(path); err != nil {
1953
+ return
1954
+ }
1955
+ return fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd)
1956
+ }
1957
+
1958
+ // FsconfigSetPathEmpty is equivalent to fsconfig(2) called
1959
+ // with cmd == FSCONFIG_SET_PATH_EMPTY. The same as
1960
+ // FconfigSetPath but with AT_PATH_EMPTY implied.
1961
+ func FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) {
1962
+ var valuep *byte
1963
+ if valuep, err = BytePtrFromString(path); err != nil {
1964
+ return
1965
+ }
1966
+ return fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd)
1967
+ }
1968
+
1969
+ // FsconfigSetFd is equivalent to fsconfig(2) called
1970
+ // with cmd == FSCONFIG_SET_FD.
1971
+ //
1972
+ // fd is the filesystem context to act upon.
1973
+ // key the parameter key to set.
1974
+ // value is a file descriptor to be assigned to specified key.
1975
+ func FsconfigSetFd(fd int, key string, value int) (err error) {
1976
+ return fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value)
1977
+ }
1978
+
1979
+ // FsconfigCreate is equivalent to fsconfig(2) called
1980
+ // with cmd == FSCONFIG_CMD_CREATE.
1981
+ //
1982
+ // fd is the filesystem context to act upon.
1983
+ func FsconfigCreate(fd int) (err error) {
1984
+ return fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0)
1985
+ }
1986
+
1987
+ // FsconfigReconfigure is equivalent to fsconfig(2) called
1988
+ // with cmd == FSCONFIG_CMD_RECONFIGURE.
1989
+ //
1990
+ // fd is the filesystem context to act upon.
1991
+ func FsconfigReconfigure(fd int) (err error) {
1992
+ return fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0)
1993
+ }
1994
+
1995
+ //sys Getdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64
1996
+ //sysnb Getpgid(pid int) (pgid int, err error)
1997
+
1998
+ func Getpgrp() (pid int) {
1999
+ pid, _ = Getpgid(0)
2000
+ return
2001
+ }
2002
+
2003
+ //sysnb Getpid() (pid int)
2004
+ //sysnb Getppid() (ppid int)
2005
+ //sys Getpriority(which int, who int) (prio int, err error)
2006
+
2007
+ func Getrandom(buf []byte, flags int) (n int, err error) {
2008
+ vdsoRet, supported := vgetrandom(buf, uint32(flags))
2009
+ if supported {
2010
+ if vdsoRet < 0 {
2011
+ return 0, errnoErr(syscall.Errno(-vdsoRet))
2012
+ }
2013
+ return vdsoRet, nil
2014
+ }
2015
+ var p *byte
2016
+ if len(buf) > 0 {
2017
+ p = &buf[0]
2018
+ }
2019
+ r, _, e := Syscall(SYS_GETRANDOM, uintptr(unsafe.Pointer(p)), uintptr(len(buf)), uintptr(flags))
2020
+ if e != 0 {
2021
+ return 0, errnoErr(e)
2022
+ }
2023
+ return int(r), nil
2024
+ }
2025
+
2026
+ //sysnb Getrusage(who int, rusage *Rusage) (err error)
2027
+ //sysnb Getsid(pid int) (sid int, err error)
2028
+ //sysnb Gettid() (tid int)
2029
+ //sys Getxattr(path string, attr string, dest []byte) (sz int, err error)
2030
+ //sys InitModule(moduleImage []byte, params string) (err error)
2031
+ //sys InotifyAddWatch(fd int, pathname string, mask uint32) (watchdesc int, err error)
2032
+ //sysnb InotifyInit1(flags int) (fd int, err error)
2033
+ //sysnb InotifyRmWatch(fd int, watchdesc uint32) (success int, err error)
2034
+ //sysnb Kill(pid int, sig syscall.Signal) (err error)
2035
+ //sys Klogctl(typ int, buf []byte) (n int, err error) = SYS_SYSLOG
2036
+ //sys Lgetxattr(path string, attr string, dest []byte) (sz int, err error)
2037
+ //sys Listxattr(path string, dest []byte) (sz int, err error)
2038
+ //sys Llistxattr(path string, dest []byte) (sz int, err error)
2039
+ //sys Lremovexattr(path string, attr string) (err error)
2040
+ //sys Lsetxattr(path string, attr string, data []byte, flags int) (err error)
2041
+ //sys MemfdCreate(name string, flags int) (fd int, err error)
2042
+ //sys Mkdirat(dirfd int, path string, mode uint32) (err error)
2043
+ //sys Mknodat(dirfd int, path string, mode uint32, dev int) (err error)
2044
+ //sys MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error)
2045
+ //sys Nanosleep(time *Timespec, leftover *Timespec) (err error)
2046
+ //sys OpenTree(dfd int, fileName string, flags uint) (r int, err error)
2047
+ //sys PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)
2048
+ //sys PivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT
2049
+ //sys Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)
2050
+ //sys pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error)
2051
+ //sys read(fd int, p []byte) (n int, err error)
2052
+ //sys Removexattr(path string, attr string) (err error)
2053
+ //sys Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)
2054
+ //sys RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)
2055
+ //sys Setdomainname(p []byte) (err error)
2056
+ //sys Sethostname(p []byte) (err error)
2057
+ //sysnb Setpgid(pid int, pgid int) (err error)
2058
+ //sysnb Setsid() (pid int, err error)
2059
+ //sysnb Settimeofday(tv *Timeval) (err error)
2060
+ //sys Setns(fd int, nstype int) (err error)
2061
+
2062
+ //go:linkname syscall_prlimit syscall.prlimit
2063
+ func syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error
2064
+
2065
+ func Prlimit(pid, resource int, newlimit, old *Rlimit) error {
2066
+ // Just call the syscall version, because as of Go 1.21
2067
+ // it will affect starting a new process.
2068
+ return syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old))
2069
+ }
2070
+
2071
+ // PrctlRetInt performs a prctl operation specified by option and further
2072
+ // optional arguments arg2 through arg5 depending on option. It returns a
2073
+ // non-negative integer that is returned by the prctl syscall.
2074
+ func PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) {
2075
+ ret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)
2076
+ if err != 0 {
2077
+ return 0, err
2078
+ }
2079
+ return int(ret), nil
2080
+ }
2081
+
2082
+ func Setuid(uid int) (err error) {
2083
+ return syscall.Setuid(uid)
2084
+ }
2085
+
2086
+ func Setgid(gid int) (err error) {
2087
+ return syscall.Setgid(gid)
2088
+ }
2089
+
2090
+ func Setreuid(ruid, euid int) (err error) {
2091
+ return syscall.Setreuid(ruid, euid)
2092
+ }
2093
+
2094
+ func Setregid(rgid, egid int) (err error) {
2095
+ return syscall.Setregid(rgid, egid)
2096
+ }
2097
+
2098
+ func Setresuid(ruid, euid, suid int) (err error) {
2099
+ return syscall.Setresuid(ruid, euid, suid)
2100
+ }
2101
+
2102
+ func Setresgid(rgid, egid, sgid int) (err error) {
2103
+ return syscall.Setresgid(rgid, egid, sgid)
2104
+ }
2105
+
2106
+ // SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set.
2107
+ // setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability.
2108
+ // If the call fails due to other reasons, current fsgid will be returned.
2109
+ func SetfsgidRetGid(gid int) (int, error) {
2110
+ return setfsgid(gid)
2111
+ }
2112
+
2113
+ // SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set.
2114
+ // setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability
2115
+ // If the call fails due to other reasons, current fsuid will be returned.
2116
+ func SetfsuidRetUid(uid int) (int, error) {
2117
+ return setfsuid(uid)
2118
+ }
2119
+
2120
+ func Setfsgid(gid int) error {
2121
+ _, err := setfsgid(gid)
2122
+ return err
2123
+ }
2124
+
2125
+ func Setfsuid(uid int) error {
2126
+ _, err := setfsuid(uid)
2127
+ return err
2128
+ }
2129
+
2130
+ func Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {
2131
+ return signalfd(fd, sigmask, _C__NSIG/8, flags)
2132
+ }
2133
+
2134
+ //sys Setpriority(which int, who int, prio int) (err error)
2135
+ //sys Setxattr(path string, attr string, data []byte, flags int) (err error)
2136
+ //sys signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4
2137
+ //sys Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)
2138
+ //sys Sync()
2139
+ //sys Syncfs(fd int) (err error)
2140
+ //sysnb Sysinfo(info *Sysinfo_t) (err error)
2141
+ //sys Tee(rfd int, wfd int, len int, flags int) (n int64, err error)
2142
+ //sysnb TimerfdCreate(clockid int, flags int) (fd int, err error)
2143
+ //sysnb TimerfdGettime(fd int, currValue *ItimerSpec) (err error)
2144
+ //sysnb TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error)
2145
+ //sysnb Tgkill(tgid int, tid int, sig syscall.Signal) (err error)
2146
+ //sysnb Times(tms *Tms) (ticks uintptr, err error)
2147
+ //sysnb Umask(mask int) (oldmask int)
2148
+ //sysnb Uname(buf *Utsname) (err error)
2149
+ //sys Unmount(target string, flags int) (err error) = SYS_UMOUNT2
2150
+ //sys Unshare(flags int) (err error)
2151
+ //sys write(fd int, p []byte) (n int, err error)
2152
+ //sys exitThread(code int) (err error) = SYS_EXIT
2153
+ //sys readv(fd int, iovs []Iovec) (n int, err error) = SYS_READV
2154
+ //sys writev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV
2155
+ //sys preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV
2156
+ //sys pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV
2157
+ //sys preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2
2158
+ //sys pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2
2159
+
2160
+ // minIovec is the size of the small initial allocation used by
2161
+ // Readv, Writev, etc.
2162
+ //
2163
+ // This small allocation gets stack allocated, which lets the
2164
+ // common use case of len(iovs) <= minIovs avoid more expensive
2165
+ // heap allocations.
2166
+ const minIovec = 8
2167
+
2168
+ // appendBytes converts bs to Iovecs and appends them to vecs.
2169
+ func appendBytes(vecs []Iovec, bs [][]byte) []Iovec {
2170
+ for _, b := range bs {
2171
+ var v Iovec
2172
+ v.SetLen(len(b))
2173
+ if len(b) > 0 {
2174
+ v.Base = &b[0]
2175
+ } else {
2176
+ v.Base = (*byte)(unsafe.Pointer(&_zero))
2177
+ }
2178
+ vecs = append(vecs, v)
2179
+ }
2180
+ return vecs
2181
+ }
2182
+
2183
+ // offs2lohi splits offs into its low and high order bits.
2184
+ func offs2lohi(offs int64) (lo, hi uintptr) {
2185
+ const longBits = SizeofLong * 8
2186
+ return uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet
2187
+ }
2188
+
2189
+ func Readv(fd int, iovs [][]byte) (n int, err error) {
2190
+ iovecs := make([]Iovec, 0, minIovec)
2191
+ iovecs = appendBytes(iovecs, iovs)
2192
+ n, err = readv(fd, iovecs)
2193
+ readvRacedetect(iovecs, n, err)
2194
+ return n, err
2195
+ }
2196
+
2197
+ func Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {
2198
+ iovecs := make([]Iovec, 0, minIovec)
2199
+ iovecs = appendBytes(iovecs, iovs)
2200
+ lo, hi := offs2lohi(offset)
2201
+ n, err = preadv(fd, iovecs, lo, hi)
2202
+ readvRacedetect(iovecs, n, err)
2203
+ return n, err
2204
+ }
2205
+
2206
+ func Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {
2207
+ iovecs := make([]Iovec, 0, minIovec)
2208
+ iovecs = appendBytes(iovecs, iovs)
2209
+ lo, hi := offs2lohi(offset)
2210
+ n, err = preadv2(fd, iovecs, lo, hi, flags)
2211
+ readvRacedetect(iovecs, n, err)
2212
+ return n, err
2213
+ }
2214
+
2215
+ func readvRacedetect(iovecs []Iovec, n int, err error) {
2216
+ if !raceenabled {
2217
+ return
2218
+ }
2219
+ for i := 0; n > 0 && i < len(iovecs); i++ {
2220
+ m := min(int(iovecs[i].Len), n)
2221
+ n -= m
2222
+ if m > 0 {
2223
+ raceWriteRange(unsafe.Pointer(iovecs[i].Base), m)
2224
+ }
2225
+ }
2226
+ if err == nil {
2227
+ raceAcquire(unsafe.Pointer(&ioSync))
2228
+ }
2229
+ }
2230
+
2231
+ func Writev(fd int, iovs [][]byte) (n int, err error) {
2232
+ iovecs := make([]Iovec, 0, minIovec)
2233
+ iovecs = appendBytes(iovecs, iovs)
2234
+ if raceenabled {
2235
+ raceReleaseMerge(unsafe.Pointer(&ioSync))
2236
+ }
2237
+ n, err = writev(fd, iovecs)
2238
+ writevRacedetect(iovecs, n)
2239
+ return n, err
2240
+ }
2241
+
2242
+ func Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {
2243
+ iovecs := make([]Iovec, 0, minIovec)
2244
+ iovecs = appendBytes(iovecs, iovs)
2245
+ if raceenabled {
2246
+ raceReleaseMerge(unsafe.Pointer(&ioSync))
2247
+ }
2248
+ lo, hi := offs2lohi(offset)
2249
+ n, err = pwritev(fd, iovecs, lo, hi)
2250
+ writevRacedetect(iovecs, n)
2251
+ return n, err
2252
+ }
2253
+
2254
+ func Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {
2255
+ iovecs := make([]Iovec, 0, minIovec)
2256
+ iovecs = appendBytes(iovecs, iovs)
2257
+ if raceenabled {
2258
+ raceReleaseMerge(unsafe.Pointer(&ioSync))
2259
+ }
2260
+ lo, hi := offs2lohi(offset)
2261
+ n, err = pwritev2(fd, iovecs, lo, hi, flags)
2262
+ writevRacedetect(iovecs, n)
2263
+ return n, err
2264
+ }
2265
+
2266
+ func writevRacedetect(iovecs []Iovec, n int) {
2267
+ if !raceenabled {
2268
+ return
2269
+ }
2270
+ for i := 0; n > 0 && i < len(iovecs); i++ {
2271
+ m := min(int(iovecs[i].Len), n)
2272
+ n -= m
2273
+ if m > 0 {
2274
+ raceReadRange(unsafe.Pointer(iovecs[i].Base), m)
2275
+ }
2276
+ }
2277
+ }
2278
+
2279
+ // mmap varies by architecture; see syscall_linux_*.go.
2280
+ //sys munmap(addr uintptr, length uintptr) (err error)
2281
+ //sys mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)
2282
+ //sys Madvise(b []byte, advice int) (err error)
2283
+ //sys Mprotect(b []byte, prot int) (err error)
2284
+ //sys Mlock(b []byte) (err error)
2285
+ //sys Mlockall(flags int) (err error)
2286
+ //sys Msync(b []byte, flags int) (err error)
2287
+ //sys Munlock(b []byte) (err error)
2288
+ //sys Munlockall() (err error)
2289
+
2290
+ const (
2291
+ mremapFixed = MREMAP_FIXED
2292
+ mremapDontunmap = MREMAP_DONTUNMAP
2293
+ mremapMaymove = MREMAP_MAYMOVE
2294
+ )
2295
+
2296
+ // Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,
2297
+ // using the specified flags.
2298
+ func Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {
2299
+ var p unsafe.Pointer
2300
+ if len(iovs) > 0 {
2301
+ p = unsafe.Pointer(&iovs[0])
2302
+ }
2303
+
2304
+ n, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0)
2305
+ if errno != 0 {
2306
+ return 0, syscall.Errno(errno)
2307
+ }
2308
+
2309
+ return int(n), nil
2310
+ }
2311
+
2312
+ func isGroupMember(gid int) bool {
2313
+ groups, err := Getgroups()
2314
+ if err != nil {
2315
+ return false
2316
+ }
2317
+
2318
+ return slices.Contains(groups, gid)
2319
+ }
2320
+
2321
+ func isCapDacOverrideSet() bool {
2322
+ hdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3}
2323
+ data := [2]CapUserData{}
2324
+ err := Capget(&hdr, &data[0])
2325
+
2326
+ return err == nil && data[0].Effective&(1<<CAP_DAC_OVERRIDE) != 0
2327
+ }
2328
+
2329
+ //sys faccessat(dirfd int, path string, mode uint32) (err error)
2330
+ //sys Faccessat2(dirfd int, path string, mode uint32, flags int) (err error)
2331
+
2332
+ func Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {
2333
+ if flags == 0 {
2334
+ return faccessat(dirfd, path, mode)
2335
+ }
2336
+
2337
+ if err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM {
2338
+ return err
2339
+ }
2340
+
2341
+ // The Linux kernel faccessat system call does not take any flags.
2342
+ // The glibc faccessat implements the flags itself; see
2343
+ // https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD
2344
+ // Because people naturally expect syscall.Faccessat to act
2345
+ // like C faccessat, we do the same.
2346
+
2347
+ if flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {
2348
+ return EINVAL
2349
+ }
2350
+
2351
+ var st Stat_t
2352
+ if err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {
2353
+ return err
2354
+ }
2355
+
2356
+ mode &= 7
2357
+ if mode == 0 {
2358
+ return nil
2359
+ }
2360
+
2361
+ var uid int
2362
+ if flags&AT_EACCESS != 0 {
2363
+ uid = Geteuid()
2364
+ if uid != 0 && isCapDacOverrideSet() {
2365
+ // If CAP_DAC_OVERRIDE is set, file access check is
2366
+ // done by the kernel in the same way as for root
2367
+ // (see generic_permission() in the Linux sources).
2368
+ uid = 0
2369
+ }
2370
+ } else {
2371
+ uid = Getuid()
2372
+ }
2373
+
2374
+ if uid == 0 {
2375
+ if mode&1 == 0 {
2376
+ // Root can read and write any file.
2377
+ return nil
2378
+ }
2379
+ if st.Mode&0111 != 0 {
2380
+ // Root can execute any file that anybody can execute.
2381
+ return nil
2382
+ }
2383
+ return EACCES
2384
+ }
2385
+
2386
+ var fmode uint32
2387
+ if uint32(uid) == st.Uid {
2388
+ fmode = (st.Mode >> 6) & 7
2389
+ } else {
2390
+ var gid int
2391
+ if flags&AT_EACCESS != 0 {
2392
+ gid = Getegid()
2393
+ } else {
2394
+ gid = Getgid()
2395
+ }
2396
+
2397
+ if uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) {
2398
+ fmode = (st.Mode >> 3) & 7
2399
+ } else {
2400
+ fmode = st.Mode & 7
2401
+ }
2402
+ }
2403
+
2404
+ if fmode&mode == mode {
2405
+ return nil
2406
+ }
2407
+
2408
+ return EACCES
2409
+ }
2410
+
2411
+ //sys nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT
2412
+ //sys openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT
2413
+
2414
+ // fileHandle is the argument to nameToHandleAt and openByHandleAt. We
2415
+ // originally tried to generate it via unix/linux/types.go with "type
2416
+ // fileHandle C.struct_file_handle" but that generated empty structs
2417
+ // for mips64 and mips64le. Instead, hard code it for now (it's the
2418
+ // same everywhere else) until the mips64 generator issue is fixed.
2419
+ type fileHandle struct {
2420
+ Bytes uint32
2421
+ Type int32
2422
+ }
2423
+
2424
+ // FileHandle represents the C struct file_handle used by
2425
+ // name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see
2426
+ // OpenByHandleAt).
2427
+ type FileHandle struct {
2428
+ *fileHandle
2429
+ }
2430
+
2431
+ // NewFileHandle constructs a FileHandle.
2432
+ func NewFileHandle(handleType int32, handle []byte) FileHandle {
2433
+ const hdrSize = unsafe.Sizeof(fileHandle{})
2434
+ buf := make([]byte, hdrSize+uintptr(len(handle)))
2435
+ copy(buf[hdrSize:], handle)
2436
+ fh := (*fileHandle)(unsafe.Pointer(&buf[0]))
2437
+ fh.Type = handleType
2438
+ fh.Bytes = uint32(len(handle))
2439
+ return FileHandle{fh}
2440
+ }
2441
+
2442
+ func (fh *FileHandle) Size() int { return int(fh.fileHandle.Bytes) }
2443
+ func (fh *FileHandle) Type() int32 { return fh.fileHandle.Type }
2444
+ func (fh *FileHandle) Bytes() []byte {
2445
+ n := fh.Size()
2446
+ if n == 0 {
2447
+ return nil
2448
+ }
2449
+ return unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n)
2450
+ }
2451
+
2452
+ // NameToHandleAt wraps the name_to_handle_at system call; it obtains
2453
+ // a handle for a path name.
2454
+ func NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) {
2455
+ var mid _C_int
2456
+ // Try first with a small buffer, assuming the handle will
2457
+ // only be 32 bytes.
2458
+ size := uint32(32 + unsafe.Sizeof(fileHandle{}))
2459
+ didResize := false
2460
+ for {
2461
+ buf := make([]byte, size)
2462
+ fh := (*fileHandle)(unsafe.Pointer(&buf[0]))
2463
+ fh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{}))
2464
+ err = nameToHandleAt(dirfd, path, fh, &mid, flags)
2465
+ if err == EOVERFLOW {
2466
+ if didResize {
2467
+ // We shouldn't need to resize more than once
2468
+ return
2469
+ }
2470
+ didResize = true
2471
+ size = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{}))
2472
+ continue
2473
+ }
2474
+ if err != nil {
2475
+ return
2476
+ }
2477
+ return FileHandle{fh}, int(mid), nil
2478
+ }
2479
+ }
2480
+
2481
+ // OpenByHandleAt wraps the open_by_handle_at system call; it opens a
2482
+ // file via a handle as previously returned by NameToHandleAt.
2483
+ func OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) {
2484
+ return openByHandleAt(mountFD, handle.fileHandle, flags)
2485
+ }
2486
+
2487
+ // Klogset wraps the sys_syslog system call; it sets console_loglevel to
2488
+ // the value specified by arg and passes a dummy pointer to bufp.
2489
+ func Klogset(typ int, arg int) (err error) {
2490
+ var p unsafe.Pointer
2491
+ _, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg))
2492
+ if errno != 0 {
2493
+ return errnoErr(errno)
2494
+ }
2495
+ return nil
2496
+ }
2497
+
2498
+ // RemoteIovec is Iovec with the pointer replaced with an integer.
2499
+ // It is used for ProcessVMReadv and ProcessVMWritev, where the pointer
2500
+ // refers to a location in a different process' address space, which
2501
+ // would confuse the Go garbage collector.
2502
+ type RemoteIovec struct {
2503
+ Base uintptr
2504
+ Len int
2505
+ }
2506
+
2507
+ //sys ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV
2508
+ //sys ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV
2509
+
2510
+ //sys PidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN
2511
+ //sys PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD
2512
+ //sys PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL
2513
+
2514
+ //sys shmat(id int, addr uintptr, flag int) (ret uintptr, err error)
2515
+ //sys shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)
2516
+ //sys shmdt(addr uintptr) (err error)
2517
+ //sys shmget(key int, size int, flag int) (id int, err error)
2518
+
2519
+ //sys getitimer(which int, currValue *Itimerval) (err error)
2520
+ //sys setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error)
2521
+
2522
+ // MakeItimerval creates an Itimerval from interval and value durations.
2523
+ func MakeItimerval(interval, value time.Duration) Itimerval {
2524
+ return Itimerval{
2525
+ Interval: NsecToTimeval(interval.Nanoseconds()),
2526
+ Value: NsecToTimeval(value.Nanoseconds()),
2527
+ }
2528
+ }
2529
+
2530
+ // A value which may be passed to the which parameter for Getitimer and
2531
+ // Setitimer.
2532
+ type ItimerWhich int
2533
+
2534
+ // Possible which values for Getitimer and Setitimer.
2535
+ const (
2536
+ ItimerReal ItimerWhich = ITIMER_REAL
2537
+ ItimerVirtual ItimerWhich = ITIMER_VIRTUAL
2538
+ ItimerProf ItimerWhich = ITIMER_PROF
2539
+ )
2540
+
2541
+ // Getitimer wraps getitimer(2) to return the current value of the timer
2542
+ // specified by which.
2543
+ func Getitimer(which ItimerWhich) (Itimerval, error) {
2544
+ var it Itimerval
2545
+ if err := getitimer(int(which), &it); err != nil {
2546
+ return Itimerval{}, err
2547
+ }
2548
+
2549
+ return it, nil
2550
+ }
2551
+
2552
+ // Setitimer wraps setitimer(2) to arm or disarm the timer specified by which.
2553
+ // It returns the previous value of the timer.
2554
+ //
2555
+ // If the Itimerval argument is the zero value, the timer will be disarmed.
2556
+ func Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) {
2557
+ var prev Itimerval
2558
+ if err := setitimer(int(which), &it, &prev); err != nil {
2559
+ return Itimerval{}, err
2560
+ }
2561
+
2562
+ return prev, nil
2563
+ }
2564
+
2565
+ //sysnb rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK
2566
+
2567
+ func PthreadSigmask(how int, set, oldset *Sigset_t) error {
2568
+ if oldset != nil {
2569
+ // Explicitly clear in case Sigset_t is larger than _C__NSIG.
2570
+ *oldset = Sigset_t{}
2571
+ }
2572
+ return rtSigprocmask(how, set, oldset, _C__NSIG/8)
2573
+ }
2574
+
2575
+ //sysnb getresuid(ruid *_C_int, euid *_C_int, suid *_C_int)
2576
+ //sysnb getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)
2577
+
2578
+ func Getresuid() (ruid, euid, suid int) {
2579
+ var r, e, s _C_int
2580
+ getresuid(&r, &e, &s)
2581
+ return int(r), int(e), int(s)
2582
+ }
2583
+
2584
+ func Getresgid() (rgid, egid, sgid int) {
2585
+ var r, e, s _C_int
2586
+ getresgid(&r, &e, &s)
2587
+ return int(r), int(e), int(s)
2588
+ }
2589
+
2590
+ // Pselect is a wrapper around the Linux pselect6 system call.
2591
+ // This version does not modify the timeout argument.
2592
+ func Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {
2593
+ // Per https://man7.org/linux/man-pages/man2/select.2.html#NOTES,
2594
+ // The Linux pselect6() system call modifies its timeout argument.
2595
+ // [Not modifying the argument] is the behavior required by POSIX.1-2001.
2596
+ var mutableTimeout *Timespec
2597
+ if timeout != nil {
2598
+ mutableTimeout = new(Timespec)
2599
+ *mutableTimeout = *timeout
2600
+ }
2601
+
2602
+ // The final argument of the pselect6() system call is not a
2603
+ // sigset_t * pointer, but is instead a structure
2604
+ var kernelMask *sigset_argpack
2605
+ if sigmask != nil {
2606
+ wordBits := 32 << (^uintptr(0) >> 63) // see math.intSize
2607
+
2608
+ // A sigset stores one bit per signal,
2609
+ // offset by 1 (because signal 0 does not exist).
2610
+ // So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉.
2611
+ sigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits)
2612
+
2613
+ sigsetBytes := uintptr(sigsetWords * (wordBits / 8))
2614
+ kernelMask = &sigset_argpack{
2615
+ ss: sigmask,
2616
+ ssLen: sigsetBytes,
2617
+ }
2618
+ }
2619
+
2620
+ return pselect6(nfd, r, w, e, mutableTimeout, kernelMask)
2621
+ }
2622
+
2623
+ //sys schedSetattr(pid int, attr *SchedAttr, flags uint) (err error)
2624
+ //sys schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error)
2625
+
2626
+ // SchedSetAttr is a wrapper for sched_setattr(2) syscall.
2627
+ // https://man7.org/linux/man-pages/man2/sched_setattr.2.html
2628
+ func SchedSetAttr(pid int, attr *SchedAttr, flags uint) error {
2629
+ if attr == nil {
2630
+ return EINVAL
2631
+ }
2632
+ attr.Size = SizeofSchedAttr
2633
+ return schedSetattr(pid, attr, flags)
2634
+ }
2635
+
2636
+ // SchedGetAttr is a wrapper for sched_getattr(2) syscall.
2637
+ // https://man7.org/linux/man-pages/man2/sched_getattr.2.html
2638
+ func SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {
2639
+ attr := &SchedAttr{}
2640
+ if err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil {
2641
+ return nil, err
2642
+ }
2643
+ return attr, nil
2644
+ }
2645
+
2646
+ //sys Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error)
2647
+ //sys Mseal(b []byte, flags uint) (err error)