@salang/sa 0.1.2 → 0.1.4

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.
Files changed (282) hide show
  1. package/bin/sa.js +19 -1
  2. package/package.json +8 -7
  3. package/sa_std/alloc/layout.sal +12 -0
  4. package/sa_std/alloc/prelude.sa +1 -0
  5. package/sa_std/alloc/prelude.sal +1 -0
  6. package/sa_std/alloc/string.sa +3 -0
  7. package/sa_std/alloc/vec.sa +684 -0
  8. package/sa_std/alloc/vec.sal +4 -0
  9. package/sa_std/any.sa +130 -0
  10. package/sa_std/any.sal +23 -0
  11. package/sa_std/array.sa +1876 -0
  12. package/sa_std/ascii.sa +2 -0
  13. package/sa_std/ascii.sal +1 -0
  14. package/sa_std/async.sla +116 -0
  15. package/sa_std/binary_heap.sa +3003 -0
  16. package/sa_std/binary_heap.sal +7 -0
  17. package/sa_std/borrow.sa +171 -0
  18. package/sa_std/borrow.sal +13 -0
  19. package/sa_std/btree_map.sa +2210 -0
  20. package/sa_std/btree_map.sal +11 -0
  21. package/sa_std/btree_set.sa +1072 -0
  22. package/sa_std/btree_set.sal +6 -0
  23. package/sa_std/char.sa +1309 -0
  24. package/sa_std/char.sal +50 -0
  25. package/sa_std/cmp.sa +554 -0
  26. package/sa_std/cmp.sal +14 -0
  27. package/sa_std/collections/binary_heap.sa +1 -0
  28. package/sa_std/collections/btree_map.sa +1 -0
  29. package/sa_std/collections/btree_set.sa +1 -0
  30. package/sa_std/collections/hashmap.sa +1 -0
  31. package/sa_std/collections/hashset.sa +1 -0
  32. package/sa_std/collections/linked_list.sa +1120 -0
  33. package/sa_std/collections/linked_list.sal +10 -0
  34. package/sa_std/collections/prelude.sa +7 -0
  35. package/sa_std/collections/prelude.sal +1 -0
  36. package/sa_std/collections/vec_deque.sa +1 -0
  37. package/sa_std/collections.sal +13 -0
  38. package/sa_std/convert.sa +1115 -0
  39. package/sa_std/convert.sal +24 -0
  40. package/sa_std/core/arc.sa +233 -0
  41. package/sa_std/core/arc.sal +4 -0
  42. package/sa_std/core/ascii.sa +784 -0
  43. package/sa_std/core/ascii.sal +34 -0
  44. package/sa_std/core/bit.sa +41 -0
  45. package/sa_std/core/box.sa +1 -0
  46. package/sa_std/core/box.sal +2 -0
  47. package/sa_std/core/cell.sa +108 -0
  48. package/sa_std/core/cell.sal +5 -0
  49. package/sa_std/core/cleanup.sa +26 -0
  50. package/sa_std/core/control.sa +20 -0
  51. package/sa_std/core/derive.sa +60 -0
  52. package/sa_std/core/derive.sal +1 -0
  53. package/sa_std/core/dispatch.sa +7 -0
  54. package/sa_std/core/dispatch.sal +5 -0
  55. package/sa_std/core/future.sa +777 -0
  56. package/sa_std/core/future.sal +73 -0
  57. package/sa_std/core/hash.sa +48 -0
  58. package/sa_std/core/iter.sa +2805 -0
  59. package/sa_std/core/iter.sal +4 -0
  60. package/sa_std/core/loop.sa +60 -0
  61. package/sa_std/core/mem.sa +220 -0
  62. package/sa_std/core/option.sa +825 -0
  63. package/sa_std/core/option.sal +11 -0
  64. package/sa_std/core/panic.sa +23 -0
  65. package/sa_std/core/panic.sal +12 -0
  66. package/sa_std/core/prelude.sa +18 -0
  67. package/sa_std/core/prelude.sal +18 -0
  68. package/sa_std/core/rc.sa +225 -0
  69. package/sa_std/core/rc.sal +4 -0
  70. package/sa_std/core/refcell.sa +283 -0
  71. package/sa_std/core/refcell.sal +13 -0
  72. package/sa_std/core/result.sa +708 -0
  73. package/sa_std/core/result.sal +6 -0
  74. package/sa_std/core/rust_patterns.sal +295 -0
  75. package/sa_std/core/sa_core.sa +84 -0
  76. package/sa_std/core/slice.sa +4021 -0
  77. package/sa_std/core/slice.sal +7 -0
  78. package/sa_std/core/task.sa +112 -0
  79. package/sa_std/core/task.sal +15 -0
  80. package/sa_std/core/trait_object.sa +26 -0
  81. package/sa_std/core/trait_object.sal +4 -0
  82. package/sa_std/core/waker.sa +289 -0
  83. package/sa_std/core/waker.sal +31 -0
  84. package/sa_std/core/weak.sa +2 -0
  85. package/sa_std/core/weak.sal +4 -0
  86. package/sa_std/cow.sa +3 -0
  87. package/sa_std/cow.sal +2 -0
  88. package/sa_std/cstring.sa +3 -0
  89. package/sa_std/cstring.sal +2 -0
  90. package/sa_std/default.sa +99 -0
  91. package/sa_std/duration.sa +3 -0
  92. package/sa_std/duration.sal +2 -0
  93. package/sa_std/encoding/json.sa +259 -0
  94. package/sa_std/encoding/json.sai +54 -0
  95. package/sa_std/encoding/json.sal +35 -0
  96. package/sa_std/encoding/prelude.sa +1 -0
  97. package/sa_std/encoding/prelude.sal +0 -0
  98. package/sa_std/env.sa +390 -0
  99. package/sa_std/env.sai +25 -0
  100. package/sa_std/error.sa +253 -0
  101. package/sa_std/error.sal +44 -0
  102. package/sa_std/ffi/cstring.sa +3 -0
  103. package/sa_std/ffi/cstring.sal +1 -0
  104. package/sa_std/ffi/prelude.sa +2 -0
  105. package/sa_std/ffi/prelude.sal +2 -0
  106. package/sa_std/ffi.sa +635 -0
  107. package/sa_std/ffi.sal +51 -0
  108. package/sa_std/fmt.sa +2 -0
  109. package/sa_std/fmt.sai +18 -0
  110. package/sa_std/fmt.sal +35 -0
  111. package/sa_std/fs.sa +1023 -0
  112. package/sa_std/fs.sai +127 -0
  113. package/sa_std/fs.sal +51 -0
  114. package/sa_std/future.sa +2 -0
  115. package/sa_std/future.sal +1 -0
  116. package/sa_std/hash.sa +1486 -0
  117. package/sa_std/hash.sal +13 -0
  118. package/sa_std/hashmap.sa +1962 -0
  119. package/sa_std/hashmap.sal +20 -0
  120. package/sa_std/hashset.sa +1004 -0
  121. package/sa_std/hashset.sal +18 -0
  122. package/sa_std/http2.sa +78 -0
  123. package/sa_std/http2.sai +26 -0
  124. package/sa_std/http2.sal +36 -0
  125. package/sa_std/instant.sa +3 -0
  126. package/sa_std/instant.sal +2 -0
  127. package/sa_std/io/buf_reader.sa +43 -0
  128. package/sa_std/io/buf_writer.sa +35 -0
  129. package/sa_std/io/bufio.sa +4 -0
  130. package/sa_std/io/bufio.sal +4 -0
  131. package/sa_std/io/prelude.sa +1 -0
  132. package/sa_std/io/prelude.sal +1 -0
  133. package/sa_std/io/print.sa +2 -0
  134. package/sa_std/io/print.sai +3 -0
  135. package/sa_std/io.sa +925 -0
  136. package/sa_std/io.sai +25 -0
  137. package/sa_std/io.sal +84 -0
  138. package/sa_std/iter.sa +2 -0
  139. package/sa_std/iter.sal +1 -0
  140. package/sa_std/join_handle.sa +3 -0
  141. package/sa_std/join_handle.sal +2 -0
  142. package/sa_std/libsa_async.sa +80 -0
  143. package/sa_std/m_async.sa +137 -0
  144. package/sa_std/m_async.sal +30 -0
  145. package/sa_std/m_async.sla +2 -0
  146. package/sa_std/manually_drop.sa +3 -0
  147. package/sa_std/manually_drop.sal +2 -0
  148. package/sa_std/marker/phantom_data.sa +3 -0
  149. package/sa_std/marker/phantom_data.sal +1 -0
  150. package/sa_std/marker/prelude.sa +4 -0
  151. package/sa_std/marker/prelude.sal +4 -0
  152. package/sa_std/marker.sa +220 -0
  153. package/sa_std/marker.sal +15 -0
  154. package/sa_std/math.sa +84 -0
  155. package/sa_std/math.sai +10 -0
  156. package/sa_std/mem/manually_drop.sa +3 -0
  157. package/sa_std/mem/manually_drop.sal +1 -0
  158. package/sa_std/mem/prelude.sa +2 -0
  159. package/sa_std/mem/prelude.sal +2 -0
  160. package/sa_std/mem.sa +564 -0
  161. package/sa_std/mem.sal +40 -0
  162. package/sa_std/modstate.sai +19 -0
  163. package/sa_std/net.sa +4227 -0
  164. package/sa_std/net.sai +239 -0
  165. package/sa_std/net.sal +159 -0
  166. package/sa_std/netx.sa +85 -0
  167. package/sa_std/netx.sai +11 -0
  168. package/sa_std/netx.sal +39 -0
  169. package/sa_std/nonzero.sa +3 -0
  170. package/sa_std/nonzero.sal +2 -0
  171. package/sa_std/num/nonzero.sa +3 -0
  172. package/sa_std/num/nonzero.sal +1 -0
  173. package/sa_std/num/prelude.sa +3 -0
  174. package/sa_std/num/prelude.sal +3 -0
  175. package/sa_std/num.sa +17302 -0
  176. package/sa_std/num.sai +11 -0
  177. package/sa_std/num.sal +341 -0
  178. package/sa_std/ops.sa +1884 -0
  179. package/sa_std/ops.sal +68 -0
  180. package/sa_std/option.sa +2 -0
  181. package/sa_std/option.sal +1 -0
  182. package/sa_std/os/fd.sa +96 -0
  183. package/sa_std/os/fd.sai +7 -0
  184. package/sa_std/os/fd.sal +11 -0
  185. package/sa_std/os/prelude.sa +2 -0
  186. package/sa_std/os/prelude.sal +1 -0
  187. package/sa_std/os/unix_ffi.sa +271 -0
  188. package/sa_std/panic.sa +1 -0
  189. package/sa_std/panic.sal +1 -0
  190. package/sa_std/path.sa +3170 -0
  191. package/sa_std/path.sal +12 -0
  192. package/sa_std/phantom_data.sa +3 -0
  193. package/sa_std/phantom_data.sal +2 -0
  194. package/sa_std/pin.sa +79 -0
  195. package/sa_std/pin.sal +5 -0
  196. package/sa_std/plugin_async.sa +90 -0
  197. package/sa_std/plugin_async.sal +29 -0
  198. package/sa_std/plugin_async.sla +4 -0
  199. package/sa_std/plugin_http_async.sa +46 -0
  200. package/sa_std/plugin_http_server.sa +61 -0
  201. package/sa_std/plugin_http_server.sla +2 -0
  202. package/sa_std/plugin_sqlite.sa +106 -0
  203. package/sa_std/plugin_sqlite.sla +2 -0
  204. package/sa_std/prelude.sa +60 -0
  205. package/sa_std/prelude.sal +55 -0
  206. package/sa_std/process.sa +916 -0
  207. package/sa_std/process.sai +57 -0
  208. package/sa_std/process.sal +27 -0
  209. package/sa_std/ptr.sa +503 -0
  210. package/sa_std/ptr.sal +2 -0
  211. package/sa_std/result.sa +2 -0
  212. package/sa_std/result.sal +1 -0
  213. package/sa_std/rust_core.sa +51 -0
  214. package/sa_std/rust_core.sal +26 -0
  215. package/sa_std/sa.mod +7 -0
  216. package/sa_std/sort.sa +156 -0
  217. package/sa_std/str.sla +13 -0
  218. package/sa_std/string.sa +12240 -0
  219. package/sa_std/string.sai +25 -0
  220. package/sa_std/string.sal +17 -0
  221. package/sa_std/string_format.sa +269 -0
  222. package/sa_std/sync/atomic.sa +1500 -0
  223. package/sa_std/sync/atomic.sal +45 -0
  224. package/sa_std/sync/barrier.sa +105 -0
  225. package/sa_std/sync/barrier.sal +7 -0
  226. package/sa_std/sync/condvar.sa +240 -0
  227. package/sa_std/sync/condvar.sal +4 -0
  228. package/sa_std/sync/mpsc.sa +758 -0
  229. package/sa_std/sync/mpsc.sal +42 -0
  230. package/sa_std/sync/mpsc_list.sa +255 -0
  231. package/sa_std/sync/mpsc_list.sal +3 -0
  232. package/sa_std/sync/mutex.sa +182 -0
  233. package/sa_std/sync/mutex.sal +7 -0
  234. package/sa_std/sync/once.sa +371 -0
  235. package/sa_std/sync/once.sal +31 -0
  236. package/sa_std/sync/poison.sa +36 -0
  237. package/sa_std/sync/poison.sal +11 -0
  238. package/sa_std/sync/prelude.sa +8 -0
  239. package/sa_std/sync/prelude.sal +7 -0
  240. package/sa_std/sync/rwlock.sa +369 -0
  241. package/sa_std/sync/rwlock.sal +13 -0
  242. package/sa_std/task.sa +2 -0
  243. package/sa_std/task.sal +1 -0
  244. package/sa_std/term.sa +2 -0
  245. package/sa_std/term.sai +10 -0
  246. package/sa_std/term.sal +33 -0
  247. package/sa_std/testing/assert.sai +4 -0
  248. package/sa_std/testing/mock_io.sa +174 -0
  249. package/sa_std/testing/mock_io.sal +5 -0
  250. package/sa_std/testing/prelude.sa +2 -0
  251. package/sa_std/testing/prelude.sal +1 -0
  252. package/sa_std/text/prelude.sa +1 -0
  253. package/sa_std/text/prelude.sal +1 -0
  254. package/sa_std/text/regex.sa +2 -0
  255. package/sa_std/text/regex.sai +9 -0
  256. package/sa_std/text/regex.sal +33 -0
  257. package/sa_std/thread/join_handle.sa +3 -0
  258. package/sa_std/thread/join_handle.sal +1 -0
  259. package/sa_std/thread/prelude.sa +4 -0
  260. package/sa_std/thread/prelude.sal +3 -0
  261. package/sa_std/thread.sa +160 -0
  262. package/sa_std/thread.sai +11 -0
  263. package/sa_std/thread.sal +4 -0
  264. package/sa_std/thread_local.sa +45 -0
  265. package/sa_std/thread_local.sai +9 -0
  266. package/sa_std/time/duration.sa +3 -0
  267. package/sa_std/time/duration.sal +1 -0
  268. package/sa_std/time/instant.sa +3 -0
  269. package/sa_std/time/instant.sal +1 -0
  270. package/sa_std/time/prelude.sa +4 -0
  271. package/sa_std/time/prelude.sal +4 -0
  272. package/sa_std/time.sa +850 -0
  273. package/sa_std/time.sai +37 -0
  274. package/sa_std/time.sal +35 -0
  275. package/sa_std/time.sla +67 -0
  276. package/sa_std/tls_client.sai +39 -0
  277. package/sa_std/vec.sa +5754 -0
  278. package/sa_std/vec.sal +1 -0
  279. package/sa_std/vec_deque.sa +4925 -0
  280. package/sa_std/vec_deque.sal +8 -0
  281. package/sa_std/vec_runtime_macros.sa +11 -0
  282. package/sa_std/ws_client.sai +57 -0
@@ -0,0 +1,916 @@
1
+ @import "process.sal"
2
+ @import "process.sai"
3
+ @import "fs.sa"
4
+ @import "os/fd.sa"
5
+ @import "core/slice.sal"
6
+
7
+ [MACRO] PROCESS_STATUS_IS_OK %out_bool, %status
8
+ %out_bool = eq %status, SA_PROCESS_OK
9
+ [END_MACRO]
10
+
11
+ [MACRO] PROCESS_EXIT_SUCCESS %out_bool, %code
12
+ %out_bool = eq %code, 0
13
+ [END_MACRO]
14
+
15
+ [MACRO] PROCESS_EXIT_STATUS_NEW %exit_status, %code
16
+ store %exit_status+ProcessExitStatus_code, %code as u32
17
+ store %exit_status+ProcessExitStatus_raw, 0 as i32
18
+ [END_MACRO]
19
+
20
+ // Rust-style Default-like exit status: success code 0.
21
+ [MACRO] PROCESS_EXIT_STATUS_DEFAULT %exit_status
22
+ EXPAND PROCESS_EXIT_STATUS_NEW %exit_status, 0
23
+ [END_MACRO]
24
+
25
+ [MACRO] PROCESS_EXIT_STATUS_FROM_RAW %exit_status, %raw
26
+ __process_exit_status_code_%exit_status = call @sa_std_process_exit_status_code(%raw)
27
+ store %exit_status+ProcessExitStatus_code, __process_exit_status_code_%exit_status as u32
28
+ store %exit_status+ProcessExitStatus_raw, %raw as i32
29
+ !__process_exit_status_code_%exit_status
30
+ [END_MACRO]
31
+
32
+ [MACRO] PROCESS_EXIT_STATUS_CODE %out_code, %exit_status
33
+ %out_code = load %exit_status+ProcessExitStatus_code as u32
34
+ [END_MACRO]
35
+
36
+ // Rust-named alias for ExitStatus::code-style access.
37
+ [MACRO] PROCESS_EXIT_CODE %out_code, %exit_status
38
+ EXPAND PROCESS_EXIT_STATUS_CODE %out_code, %exit_status
39
+ [END_MACRO]
40
+
41
+
42
+ [MACRO] PROCESS_EXIT_STATUS_RAW %out_raw, %exit_status
43
+ %out_raw = load %exit_status+ProcessExitStatus_raw as i32
44
+ [END_MACRO]
45
+
46
+ [MACRO] PROCESS_EXIT_STATUS_SUCCESS %out_bool, %exit_status
47
+ EXPAND PROCESS_EXIT_STATUS_CODE __process_exit_status_code_%out_bool, %exit_status
48
+ EXPAND PROCESS_EXIT_SUCCESS %out_bool, __process_exit_status_code_%out_bool
49
+ !__process_exit_status_code_%out_bool
50
+ [END_MACRO]
51
+
52
+ // Rust-named alias for ExitStatus::success().
53
+ [MACRO] PROCESS_SUCCESS %out_bool, %exit_status
54
+ EXPAND PROCESS_EXIT_STATUS_SUCCESS %out_bool, %exit_status
55
+ [END_MACRO]
56
+
57
+ [MACRO] PROCESS_IS_SUCCESS %out_bool, %exit_status
58
+ EXPAND PROCESS_SUCCESS %out_bool, %exit_status
59
+ [END_MACRO]
60
+
61
+ [MACRO] PROCESS_CODE %out_code, %exit_status
62
+ EXPAND PROCESS_EXIT_CODE %out_code, %exit_status
63
+ [END_MACRO]
64
+
65
+ [MACRO] PROCESS_OUTPUT_STATUS %out_ptr, %output
66
+ EXPAND PROCESS_OUTPUT_STATUS_PTR %out_ptr, %output
67
+ [END_MACRO]
68
+
69
+ [MACRO] PROCESS_OUTPUT_SUCCESS %out_bool, %output
70
+ EXPAND PROCESS_OUTPUT_STATUS __process_output_success_status_%out_bool, %output
71
+ EXPAND PROCESS_IS_SUCCESS %out_bool, __process_output_success_status_%out_bool
72
+ !__process_output_success_status_%out_bool
73
+ [END_MACRO]
74
+
75
+ [MACRO] PROCESS_OUTPUT_CODE %out_code, %output
76
+ EXPAND PROCESS_OUTPUT_STATUS __process_output_code_status_%out_code, %output
77
+ EXPAND PROCESS_CODE %out_code, __process_output_code_status_%out_code
78
+ !__process_output_code_status_%out_code
79
+ [END_MACRO]
80
+
81
+
82
+
83
+ [MACRO] PROCESS_EXIT_STATUS_SIGNAL %out_signal, %exit_status
84
+ EXPAND PROCESS_EXIT_STATUS_RAW __process_exit_status_raw_%out_signal, %exit_status
85
+ %out_signal = call @sa_std_process_exit_status_signal(__process_exit_status_raw_%out_signal)
86
+ !__process_exit_status_raw_%out_signal
87
+ [END_MACRO]
88
+
89
+ [MACRO] PROCESS_EXIT_STATUS_COREDUMPED %out_flag, %exit_status
90
+ EXPAND PROCESS_EXIT_STATUS_RAW __process_exit_status_raw_%out_flag, %exit_status
91
+ %out_flag = call @sa_std_process_exit_status_core_dumped(__process_exit_status_raw_%out_flag)
92
+ !__process_exit_status_raw_%out_flag
93
+ [END_MACRO]
94
+
95
+ [MACRO] PROCESS_EXIT_STATUS_STOPPED_SIGNAL %out_signal, %exit_status
96
+ EXPAND PROCESS_EXIT_STATUS_RAW __process_exit_status_raw_%out_signal, %exit_status
97
+ %out_signal = call @sa_std_process_exit_status_stopped_signal(__process_exit_status_raw_%out_signal)
98
+ !__process_exit_status_raw_%out_signal
99
+ [END_MACRO]
100
+
101
+ [MACRO] PROCESS_EXIT_STATUS_CONTINUED %out_flag, %exit_status
102
+ EXPAND PROCESS_EXIT_STATUS_RAW __process_exit_status_raw_%out_flag, %exit_status
103
+ %out_flag = call @sa_std_process_exit_status_continued(__process_exit_status_raw_%out_flag)
104
+ !__process_exit_status_raw_%out_flag
105
+ [END_MACRO]
106
+
107
+ [MACRO] PROCESS_OUTPUT_NEW %output, %exit_status, %stdout_buffer, %stderr_buffer
108
+ store %output+ProcessOutput_status, %exit_status as ptr
109
+ store %output+ProcessOutput_stdout, %stdout_buffer as u64
110
+ store %output+ProcessOutput_stderr, %stderr_buffer as u64
111
+ [END_MACRO]
112
+
113
+ [MACRO] PROCESS_OUTPUT_STATUS_PTR %out_ptr, %output
114
+ %out_ptr = load %output+ProcessOutput_status as ptr
115
+ [END_MACRO]
116
+
117
+ [MACRO] PROCESS_OUTPUT_STDOUT_BUFFER %out_buffer, %output
118
+ %out_buffer = load %output+ProcessOutput_stdout as u64
119
+ [END_MACRO]
120
+
121
+ [MACRO] PROCESS_OUTPUT_STDERR_BUFFER %out_buffer, %output
122
+ %out_buffer = load %output+ProcessOutput_stderr as u64
123
+ [END_MACRO]
124
+
125
+ [MACRO] PROCESS_OUTPUT_STDOUT_DATA %out_ptr, %output
126
+ EXPAND PROCESS_OUTPUT_STDOUT_BUFFER __process_output_stdout_%out_ptr, %output
127
+ EXPAND FS_READ_BUFFER_DATA %out_ptr, __process_output_stdout_%out_ptr
128
+ !__process_output_stdout_%out_ptr
129
+ [END_MACRO]
130
+
131
+ [MACRO] PROCESS_OUTPUT_STDOUT_LEN %out_len, %output
132
+ EXPAND PROCESS_OUTPUT_STDOUT_BUFFER __process_output_stdout_%out_len, %output
133
+ EXPAND FS_READ_BUFFER_LEN %out_len, __process_output_stdout_%out_len
134
+ !__process_output_stdout_%out_len
135
+ [END_MACRO]
136
+
137
+ [MACRO] PROCESS_OUTPUT_STDERR_DATA %out_ptr, %output
138
+ EXPAND PROCESS_OUTPUT_STDERR_BUFFER __process_output_stderr_%out_ptr, %output
139
+ EXPAND FS_READ_BUFFER_DATA %out_ptr, __process_output_stderr_%out_ptr
140
+ !__process_output_stderr_%out_ptr
141
+ [END_MACRO]
142
+
143
+ [MACRO] PROCESS_OUTPUT_STDERR_LEN %out_len, %output
144
+ EXPAND PROCESS_OUTPUT_STDERR_BUFFER __process_output_stderr_%out_len, %output
145
+ EXPAND FS_READ_BUFFER_LEN %out_len, __process_output_stderr_%out_len
146
+ !__process_output_stderr_%out_len
147
+ [END_MACRO]
148
+
149
+ [MACRO] PROCESS_OUTPUT_FREE %out_status, %output
150
+ EXPAND PROCESS_OUTPUT_STDOUT_BUFFER __process_output_free_stdout_%out_status, %output
151
+ EXPAND PROCESS_OUTPUT_STDERR_BUFFER __process_output_free_stderr_%out_status, %output
152
+ EXPAND FS_READ_BUFFER_FREE __process_output_free_stdout_status_%out_status, __process_output_free_stdout_%out_status
153
+ EXPAND FS_READ_BUFFER_FREE __process_output_free_stderr_status_%out_status, __process_output_free_stderr_%out_status
154
+ __process_output_free_stdout_ok_%out_status = eq __process_output_free_stdout_status_%out_status, SA_PROCESS_OK
155
+ __process_output_free_stderr_ok_%out_status = eq __process_output_free_stderr_status_%out_status, SA_PROCESS_OK
156
+ __process_output_free_both_ok_%out_status = and __process_output_free_stdout_ok_%out_status, __process_output_free_stderr_ok_%out_status
157
+ br __process_output_free_both_ok_%out_status -> L_PROCESS_OUTPUT_FREE_OK_%out_status, L_PROCESS_OUTPUT_FREE_ERR_%out_status
158
+
159
+ L_PROCESS_OUTPUT_FREE_OK_%out_status:
160
+ %out_status = add 0, SA_PROCESS_OK
161
+ !__process_output_free_both_ok_%out_status
162
+ !__process_output_free_stderr_ok_%out_status
163
+ !__process_output_free_stdout_ok_%out_status
164
+ !__process_output_free_stderr_status_%out_status
165
+ !__process_output_free_stdout_status_%out_status
166
+ jmp L_PROCESS_OUTPUT_FREE_DONE_%out_status
167
+
168
+ L_PROCESS_OUTPUT_FREE_ERR_%out_status:
169
+ %out_status = add 0, SA_PROCESS_ERR_IO
170
+ !__process_output_free_both_ok_%out_status
171
+ !__process_output_free_stderr_ok_%out_status
172
+ !__process_output_free_stdout_ok_%out_status
173
+ !__process_output_free_stderr_status_%out_status
174
+ !__process_output_free_stdout_status_%out_status
175
+
176
+ L_PROCESS_OUTPUT_FREE_DONE_%out_status:
177
+ [END_MACRO]
178
+
179
+ [MACRO] PROCESS_STDIO_NEW %stdio, %kind
180
+ store %stdio+ProcessStdio_kind, %kind as u8
181
+ [END_MACRO]
182
+
183
+ [MACRO] PROCESS_STDIO_PIPED %stdio
184
+ EXPAND PROCESS_STDIO_NEW %stdio, PROCESS_STDIO_KIND_PIPED
185
+ [END_MACRO]
186
+
187
+ [MACRO] PROCESS_STDIO_INHERIT %stdio
188
+ EXPAND PROCESS_STDIO_NEW %stdio, PROCESS_STDIO_KIND_INHERIT
189
+ [END_MACRO]
190
+
191
+ [MACRO] PROCESS_STDIO_NULL %stdio
192
+ EXPAND PROCESS_STDIO_NEW %stdio, PROCESS_STDIO_KIND_NULL
193
+ [END_MACRO]
194
+
195
+ [MACRO] PROCESS_STDIO_KIND %out_kind, %stdio
196
+ %out_kind = load %stdio+ProcessStdio_kind as u8
197
+ [END_MACRO]
198
+
199
+ [MACRO] PROCESS_STDIO_MAKES_PIPE %out_bool, %stdio
200
+ EXPAND PROCESS_STDIO_KIND __process_stdio_kind_%out_bool, %stdio
201
+ %out_bool = eq __process_stdio_kind_%out_bool, PROCESS_STDIO_KIND_PIPED
202
+ !__process_stdio_kind_%out_bool
203
+ [END_MACRO]
204
+
205
+ [MACRO] PROCESS_ARGV_SLOT %out_ptr, %argv, %index
206
+ __process_argv_off_%out_ptr = mul %index, SaProcessArgv_SIZE
207
+ %out_ptr = ptr_add %argv, __process_argv_off_%out_ptr
208
+ !__process_argv_off_%out_ptr
209
+ [END_MACRO]
210
+
211
+ [MACRO] PROCESS_ARGV_SET_CONST %argv, %index, %const_label, %const_len
212
+ EXPAND PROCESS_ARGV_SLOT __process_argv_slot_%argv_%index, %argv, %index
213
+ store __process_argv_slot_%argv_%index+SaProcessArgv_data, &%const_label as ptr
214
+ store __process_argv_slot_%argv_%index+SaProcessArgv_len, %const_len as u64
215
+ !__process_argv_slot_%argv_%index
216
+ [END_MACRO]
217
+
218
+ [MACRO] PROCESS_ARGV_SET_PTR %argv, %index, %data_ptr, %data_len
219
+ EXPAND PROCESS_ARGV_SLOT __process_argv_slot_%argv_%index, %argv, %index
220
+ store __process_argv_slot_%argv_%index+SaProcessArgv_data, %data_ptr as ptr
221
+ store __process_argv_slot_%argv_%index+SaProcessArgv_len, %data_len as u64
222
+ !__process_argv_slot_%argv_%index
223
+ [END_MACRO]
224
+
225
+ [MACRO] PROCESS_ARGV_SET_SLICE %argv, %index, %slice_reg
226
+ __process_argv_slice_ptr_%argv_%index = load %slice_reg+Slice_ptr as ptr
227
+ __process_argv_slice_len_%argv_%index = load %slice_reg+Slice_len as u64
228
+ EXPAND PROCESS_ARGV_SET_PTR %argv, %index, __process_argv_slice_ptr_%argv_%index, __process_argv_slice_len_%argv_%index
229
+ !__process_argv_slice_len_%argv_%index
230
+ !__process_argv_slice_ptr_%argv_%index
231
+ [END_MACRO]
232
+
233
+ [MACRO] PROCESS_ARGV_DATA %out_ptr, %argv, %index
234
+ EXPAND PROCESS_ARGV_SLOT __process_argv_slot_%out_ptr, %argv, %index
235
+ %out_ptr = load __process_argv_slot_%out_ptr+SaProcessArgv_data as ptr
236
+ !__process_argv_slot_%out_ptr
237
+ [END_MACRO]
238
+
239
+ [MACRO] PROCESS_ARGV_LEN %out_len, %argv, %index
240
+ EXPAND PROCESS_ARGV_SLOT __process_argv_slot_%out_len, %argv, %index
241
+ %out_len = load __process_argv_slot_%out_len+SaProcessArgv_len as u64
242
+ !__process_argv_slot_%out_len
243
+ [END_MACRO]
244
+
245
+ [MACRO] PROCESS_RUN %out_status, %out_process, %argv, %argv_len
246
+ __process_run_slot_%out_process = stack_alloc 8
247
+ %out_status = call @sa_std_process_run(&%argv, %argv_len, &__process_run_slot_%out_process)
248
+ %out_process = load __process_run_slot_%out_process+0 as u64
249
+ [END_MACRO]
250
+
251
+ [MACRO] PROCESS_RUN_CWD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len
252
+ __process_run_cwd_slot_%out_process = stack_alloc 8
253
+ %out_status = call @sa_std_process_run_cwd(&%argv, %argv_len, &%cwd, %cwd_len, &__process_run_cwd_slot_%out_process)
254
+ %out_process = load __process_run_cwd_slot_%out_process+0 as u64
255
+ [END_MACRO]
256
+
257
+ [MACRO] PROCESS_SPAWN %out_status, %out_process, %argv, %argv_len
258
+ __process_spawn_slot_%out_process = stack_alloc 8
259
+ %out_status = call @sa_std_process_spawn(&%argv, %argv_len, &__process_spawn_slot_%out_process)
260
+ %out_process = load __process_spawn_slot_%out_process+0 as u64
261
+ [END_MACRO]
262
+
263
+ [MACRO] PROCESS_SPAWN_CWD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len
264
+ __process_spawn_cwd_slot_%out_process = stack_alloc 8
265
+ %out_status = call @sa_std_process_spawn_cwd(&%argv, %argv_len, &%cwd, %cwd_len, &__process_spawn_cwd_slot_%out_process)
266
+ %out_process = load __process_spawn_cwd_slot_%out_process+0 as u64
267
+ [END_MACRO]
268
+
269
+ [MACRO] PROCESS_SPAWN_STREAM %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len
270
+ __process_stream_proc_slot_%out_process = stack_alloc 8
271
+ __process_stream_stdout_slot_%out_stdout = stack_alloc 8
272
+ __process_stream_stderr_slot_%out_stderr = stack_alloc 8
273
+ %out_status = call @sa_std_process_spawn_stream(&%argv, %argv_len, &__process_stream_proc_slot_%out_process, &__process_stream_stdout_slot_%out_stdout, &__process_stream_stderr_slot_%out_stderr)
274
+ %out_process = load __process_stream_proc_slot_%out_process+0 as u64
275
+ %out_stdout = load __process_stream_stdout_slot_%out_stdout+0 as u64
276
+ %out_stderr = load __process_stream_stderr_slot_%out_stderr+0 as u64
277
+ [END_MACRO]
278
+
279
+ [MACRO] PROCESS_SPAWN_STREAM_CWD %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len
280
+ __process_stream_cwd_proc_slot_%out_process = stack_alloc 8
281
+ __process_stream_cwd_stdout_slot_%out_stdout = stack_alloc 8
282
+ __process_stream_cwd_stderr_slot_%out_stderr = stack_alloc 8
283
+ %out_status = call @sa_std_process_spawn_stream_cwd(&%argv, %argv_len, &%cwd, %cwd_len, &__process_stream_cwd_proc_slot_%out_process, &__process_stream_cwd_stdout_slot_%out_stdout, &__process_stream_cwd_stderr_slot_%out_stderr)
284
+ %out_process = load __process_stream_cwd_proc_slot_%out_process+0 as u64
285
+ %out_stdout = load __process_stream_cwd_stdout_slot_%out_stdout+0 as u64
286
+ %out_stderr = load __process_stream_cwd_stderr_slot_%out_stderr+0 as u64
287
+ [END_MACRO]
288
+
289
+ [MACRO] PROCESS_RUN_COMMAND_EXT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
290
+ __process_run_ext_slot_%out_process = stack_alloc 8
291
+ %out_status = call @sa_std_process_run_command_ext(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &__process_run_ext_slot_%out_process)
292
+ %out_process = load __process_run_ext_slot_%out_process+0 as u64
293
+ [END_MACRO]
294
+
295
+ [MACRO] PROCESS_RUN_COMMAND_EXT_PIDFD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
296
+ __process_run_ext_pidfd_slot_%out_process = stack_alloc 8
297
+ %out_status = call @sa_std_process_run_command_ext_pidfd(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd, &__process_run_ext_pidfd_slot_%out_process)
298
+ %out_process = load __process_run_ext_pidfd_slot_%out_process+0 as u64
299
+ [END_MACRO]
300
+
301
+ [MACRO] PROCESS_RUN_COMMAND_EXT_UID_GID %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
302
+ __process_run_ext_uid_gid_slot_%out_process = stack_alloc 8
303
+ %out_status = call @sa_std_process_run_command_ext_uid_gid(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid, &__process_run_ext_uid_gid_slot_%out_process)
304
+ %out_process = load __process_run_ext_uid_gid_slot_%out_process+0 as u64
305
+ [END_MACRO]
306
+
307
+ [MACRO] PROCESS_RUN_COMMAND_EXT_GROUPS %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
308
+ __process_run_ext_groups_slot_%out_process = stack_alloc 8
309
+ %out_status = call @sa_std_process_run_command_ext_groups(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &%groups, %groups_len, %has_groups, &__process_run_ext_groups_slot_%out_process)
310
+ %out_process = load __process_run_ext_groups_slot_%out_process+0 as u64
311
+ [END_MACRO]
312
+
313
+ [MACRO] PROCESS_RUN_COMMAND_EXT_CHROOT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
314
+ __process_run_ext_chroot_slot_%out_process = stack_alloc 8
315
+ %out_status = call @sa_std_process_run_command_ext_chroot(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &%chroot, %chroot_len, %has_chroot, &__process_run_ext_chroot_slot_%out_process)
316
+ %out_process = load __process_run_ext_chroot_slot_%out_process+0 as u64
317
+ [END_MACRO]
318
+
319
+ [MACRO] PROCESS_SPAWN_COMMAND_EXT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
320
+ __process_spawn_ext_slot_%out_process = stack_alloc 8
321
+ %out_status = call @sa_std_process_spawn_command_ext(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &__process_spawn_ext_slot_%out_process)
322
+ %out_process = load __process_spawn_ext_slot_%out_process+0 as u64
323
+ [END_MACRO]
324
+
325
+ [MACRO] PROCESS_SPAWN_COMMAND_EXT_PIDFD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
326
+ __process_spawn_ext_pidfd_slot_%out_process = stack_alloc 8
327
+ %out_status = call @sa_std_process_spawn_command_ext_pidfd(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd, &__process_spawn_ext_pidfd_slot_%out_process)
328
+ %out_process = load __process_spawn_ext_pidfd_slot_%out_process+0 as u64
329
+ [END_MACRO]
330
+
331
+ [MACRO] PROCESS_SPAWN_COMMAND_EXT_UID_GID %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
332
+ __process_spawn_ext_uid_gid_slot_%out_process = stack_alloc 8
333
+ %out_status = call @sa_std_process_spawn_command_ext_uid_gid(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid, &__process_spawn_ext_uid_gid_slot_%out_process)
334
+ %out_process = load __process_spawn_ext_uid_gid_slot_%out_process+0 as u64
335
+ [END_MACRO]
336
+
337
+ [MACRO] PROCESS_SPAWN_COMMAND_EXT_GROUPS %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
338
+ __process_spawn_ext_groups_slot_%out_process = stack_alloc 8
339
+ %out_status = call @sa_std_process_spawn_command_ext_groups(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &%groups, %groups_len, %has_groups, &__process_spawn_ext_groups_slot_%out_process)
340
+ %out_process = load __process_spawn_ext_groups_slot_%out_process+0 as u64
341
+ [END_MACRO]
342
+
343
+ [MACRO] PROCESS_SPAWN_COMMAND_EXT_CHROOT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
344
+ __process_spawn_ext_chroot_slot_%out_process = stack_alloc 8
345
+ %out_status = call @sa_std_process_spawn_command_ext_chroot(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &%chroot, %chroot_len, %has_chroot, &__process_spawn_ext_chroot_slot_%out_process)
346
+ %out_process = load __process_spawn_ext_chroot_slot_%out_process+0 as u64
347
+ [END_MACRO]
348
+
349
+ [MACRO] PROCESS_SPAWN_STREAM_COMMAND_EXT %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
350
+ __process_stream_ext_proc_slot_%out_process = stack_alloc 8
351
+ __process_stream_ext_stdout_slot_%out_stdout = stack_alloc 8
352
+ __process_stream_ext_stderr_slot_%out_stderr = stack_alloc 8
353
+ %out_status = call @sa_std_process_spawn_stream_command_ext(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &__process_stream_ext_proc_slot_%out_process, &__process_stream_ext_stdout_slot_%out_stdout, &__process_stream_ext_stderr_slot_%out_stderr)
354
+ %out_process = load __process_stream_ext_proc_slot_%out_process+0 as u64
355
+ %out_stdout = load __process_stream_ext_stdout_slot_%out_stdout+0 as u64
356
+ %out_stderr = load __process_stream_ext_stderr_slot_%out_stderr+0 as u64
357
+ [END_MACRO]
358
+
359
+ [MACRO] PROCESS_SPAWN_STREAM_COMMAND_EXT_PIDFD %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
360
+ __process_stream_ext_pidfd_proc_slot_%out_process = stack_alloc 8
361
+ __process_stream_ext_pidfd_stdout_slot_%out_stdout = stack_alloc 8
362
+ __process_stream_ext_pidfd_stderr_slot_%out_stderr = stack_alloc 8
363
+ %out_status = call @sa_std_process_spawn_stream_command_ext_pidfd(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd, &__process_stream_ext_pidfd_proc_slot_%out_process, &__process_stream_ext_pidfd_stdout_slot_%out_stdout, &__process_stream_ext_pidfd_stderr_slot_%out_stderr)
364
+ %out_process = load __process_stream_ext_pidfd_proc_slot_%out_process+0 as u64
365
+ %out_stdout = load __process_stream_ext_pidfd_stdout_slot_%out_stdout+0 as u64
366
+ %out_stderr = load __process_stream_ext_pidfd_stderr_slot_%out_stderr+0 as u64
367
+ [END_MACRO]
368
+
369
+ [MACRO] PROCESS_SPAWN_STREAM_COMMAND_EXT_UID_GID %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
370
+ __process_stream_ext_uid_gid_proc_slot_%out_process = stack_alloc 8
371
+ __process_stream_ext_uid_gid_stdout_slot_%out_stdout = stack_alloc 8
372
+ __process_stream_ext_uid_gid_stderr_slot_%out_stderr = stack_alloc 8
373
+ %out_status = call @sa_std_process_spawn_stream_command_ext_uid_gid(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid, &__process_stream_ext_uid_gid_proc_slot_%out_process, &__process_stream_ext_uid_gid_stdout_slot_%out_stdout, &__process_stream_ext_uid_gid_stderr_slot_%out_stderr)
374
+ %out_process = load __process_stream_ext_uid_gid_proc_slot_%out_process+0 as u64
375
+ %out_stdout = load __process_stream_ext_uid_gid_stdout_slot_%out_stdout+0 as u64
376
+ %out_stderr = load __process_stream_ext_uid_gid_stderr_slot_%out_stderr+0 as u64
377
+ [END_MACRO]
378
+
379
+ [MACRO] PROCESS_SPAWN_STREAM_COMMAND_EXT_GROUPS %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
380
+ __process_stream_ext_groups_proc_slot_%out_process = stack_alloc 8
381
+ __process_stream_ext_groups_stdout_slot_%out_stdout = stack_alloc 8
382
+ __process_stream_ext_groups_stderr_slot_%out_stderr = stack_alloc 8
383
+ %out_status = call @sa_std_process_spawn_stream_command_ext_groups(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &%groups, %groups_len, %has_groups, &__process_stream_ext_groups_proc_slot_%out_process, &__process_stream_ext_groups_stdout_slot_%out_stdout, &__process_stream_ext_groups_stderr_slot_%out_stderr)
384
+ %out_process = load __process_stream_ext_groups_proc_slot_%out_process+0 as u64
385
+ %out_stdout = load __process_stream_ext_groups_stdout_slot_%out_stdout+0 as u64
386
+ %out_stderr = load __process_stream_ext_groups_stderr_slot_%out_stderr+0 as u64
387
+ [END_MACRO]
388
+
389
+ [MACRO] PROCESS_SPAWN_STREAM_COMMAND_EXT_CHROOT %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
390
+ __process_stream_ext_chroot_proc_slot_%out_process = stack_alloc 8
391
+ __process_stream_ext_chroot_stdout_slot_%out_stdout = stack_alloc 8
392
+ __process_stream_ext_chroot_stderr_slot_%out_stderr = stack_alloc 8
393
+ %out_status = call @sa_std_process_spawn_stream_command_ext_chroot(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, &%chroot, %chroot_len, %has_chroot, &__process_stream_ext_chroot_proc_slot_%out_process, &__process_stream_ext_chroot_stdout_slot_%out_stdout, &__process_stream_ext_chroot_stderr_slot_%out_stderr)
394
+ %out_process = load __process_stream_ext_chroot_proc_slot_%out_process+0 as u64
395
+ %out_stdout = load __process_stream_ext_chroot_stdout_slot_%out_stdout+0 as u64
396
+ %out_stderr = load __process_stream_ext_chroot_stderr_slot_%out_stderr+0 as u64
397
+ [END_MACRO]
398
+
399
+ [MACRO] PROCESS_EXEC_COMMAND_EXT %out_status, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid, %groups, %groups_len, %has_groups, %chroot, %chroot_len, %has_chroot
400
+ %out_status = call @sa_std_process_exec_command_ext(&%argv, %argv_len, &%cwd, %cwd_len, %has_cwd, &%arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid, &%groups, %groups_len, %has_groups, &%chroot, %chroot_len, %has_chroot)
401
+ [END_MACRO]
402
+
403
+ [MACRO] PROCESS_RUN_ARG0 %out_status, %out_process, %argv, %argv_len, %arg0, %arg0_len
404
+ __process_run_arg0_dummy_%out_process = stack_alloc 1
405
+ EXPAND PROCESS_RUN_COMMAND_EXT %out_status, %out_process, %argv, %argv_len, __process_run_arg0_dummy_%out_process, 0, 0, %arg0, %arg0_len, 1, 0, 0, 0
406
+ [END_MACRO]
407
+
408
+ [MACRO] PROCESS_RUN_PROCESS_GROUP %out_status, %out_process, %argv, %argv_len, %process_group
409
+ __process_run_pgroup_dummy_%out_process = stack_alloc 1
410
+ EXPAND PROCESS_RUN_COMMAND_EXT %out_status, %out_process, %argv, %argv_len, __process_run_pgroup_dummy_%out_process, 0, 0, __process_run_pgroup_dummy_%out_process, 0, 0, %process_group, 1, 0
411
+ [END_MACRO]
412
+
413
+ [MACRO] PROCESS_RUN_SETSID %out_status, %out_process, %argv, %argv_len
414
+ __process_run_setsid_dummy_%out_process = stack_alloc 1
415
+ EXPAND PROCESS_RUN_COMMAND_EXT %out_status, %out_process, %argv, %argv_len, __process_run_setsid_dummy_%out_process, 0, 0, __process_run_setsid_dummy_%out_process, 0, 0, 0, 0, 1
416
+ [END_MACRO]
417
+
418
+ [MACRO] PROCESS_ID %out_pid
419
+ %out_pid = call @sa_std_process_id()
420
+ [END_MACRO]
421
+
422
+ [MACRO] PROCESS_PARENT_ID %out_pid
423
+ %out_pid = call @sa_std_process_parent_id()
424
+ [END_MACRO]
425
+
426
+ // Rust-named aliases for current process identity helpers.
427
+
428
+ [MACRO] PROCESS_PID %out_pid
429
+ EXPAND PROCESS_ID %out_pid
430
+ [END_MACRO]
431
+
432
+ [MACRO] PROCESS_PPID %out_pid
433
+ EXPAND PROCESS_PARENT_ID %out_pid
434
+ [END_MACRO]
435
+
436
+ [MACRO] PROCESS_USER_ID %out_uid
437
+ %out_uid = call @sa_std_process_user_id()
438
+ [END_MACRO]
439
+
440
+ [MACRO] PROCESS_GROUP_ID %out_gid
441
+ %out_gid = call @sa_std_process_group_id()
442
+ [END_MACRO]
443
+
444
+ // Rust-named aliases for current credentials helpers.
445
+
446
+ [MACRO] PROCESS_UID %out_uid
447
+ EXPAND PROCESS_USER_ID %out_uid
448
+ [END_MACRO]
449
+
450
+ [MACRO] PROCESS_GID %out_gid
451
+ EXPAND PROCESS_GROUP_ID %out_gid
452
+ [END_MACRO]
453
+
454
+ [MACRO] PROCESS_ABORT
455
+ call @sa_std_process_abort()
456
+ [END_MACRO]
457
+
458
+ [MACRO] PROCESS_CHILD_ID %out_status, %out_pid, %process
459
+ __process_child_id_slot_%out_pid = stack_alloc 4
460
+ %out_status = call @sa_std_process_child_id(%process, &__process_child_id_slot_%out_pid)
461
+ %out_pid = load __process_child_id_slot_%out_pid+0 as u32
462
+ [END_MACRO]
463
+
464
+ [MACRO] PROCESS_PIDFD %out_status, %out_pidfd, %process
465
+ __process_pidfd_slot_%out_pidfd = stack_alloc 8
466
+ %out_status = call @sa_std_process_pidfd(%process, &__process_pidfd_slot_%out_pidfd)
467
+ %out_pidfd = load __process_pidfd_slot_%out_pidfd+0 as u64
468
+ [END_MACRO]
469
+
470
+ [MACRO] PROCESS_INTO_PIDFD %out_status, %out_pidfd, %process
471
+ __process_into_pidfd_slot_%out_pidfd = stack_alloc 8
472
+ %out_status = call @sa_std_process_into_pidfd(%process, &__process_into_pidfd_slot_%out_pidfd)
473
+ %out_pidfd = load __process_into_pidfd_slot_%out_pidfd+0 as u64
474
+ [END_MACRO]
475
+
476
+ [MACRO] PROCESS_WAIT %out_status, %out_code, %process
477
+ __process_wait_code_slot_%out_code = stack_alloc 4
478
+ %out_status = call @sa_std_process_wait(%process, &__process_wait_code_slot_%out_code)
479
+ %out_code = load __process_wait_code_slot_%out_code+0 as u32
480
+ [END_MACRO]
481
+
482
+ [MACRO] PROCESS_WAIT_RAW %out_status, %out_raw, %process
483
+ __process_wait_raw_slot_%out_raw = stack_alloc 4
484
+ %out_status = call @sa_std_process_wait_raw(%process, &__process_wait_raw_slot_%out_raw)
485
+ %out_raw = load __process_wait_raw_slot_%out_raw+0 as i32
486
+ [END_MACRO]
487
+
488
+ [MACRO] PROCESS_TRY_WAIT %out_status, %out_ready, %out_code, %process
489
+ __process_try_wait_ready_slot_%out_ready = stack_alloc 4
490
+ __process_try_wait_code_slot_%out_code = stack_alloc 4
491
+ %out_status = call @sa_std_process_try_wait(%process, &__process_try_wait_ready_slot_%out_ready, &__process_try_wait_code_slot_%out_code)
492
+ %out_ready = load __process_try_wait_ready_slot_%out_ready+0 as i32
493
+ %out_code = load __process_try_wait_code_slot_%out_code+0 as u32
494
+ [END_MACRO]
495
+
496
+ [MACRO] PROCESS_TRY_WAIT_RAW %out_status, %out_ready, %out_raw, %process
497
+ __process_try_wait_raw_ready_slot_%out_ready = stack_alloc 4
498
+ __process_try_wait_raw_slot_%out_raw = stack_alloc 4
499
+ %out_status = call @sa_std_process_try_wait_raw(%process, &__process_try_wait_raw_ready_slot_%out_ready, &__process_try_wait_raw_slot_%out_raw)
500
+ %out_ready = load __process_try_wait_raw_ready_slot_%out_ready+0 as i32
501
+ %out_raw = load __process_try_wait_raw_slot_%out_raw+0 as i32
502
+ [END_MACRO]
503
+
504
+ [MACRO] PROCESS_WAIT_EXIT_STATUS %out_status, %exit_status, %process
505
+ __process_wait_exit_raw_%out_status = stack_alloc 4
506
+ %out_status = call @sa_std_process_wait_raw(%process, &__process_wait_exit_raw_%out_status)
507
+ __process_wait_exit_value_%out_status = load __process_wait_exit_raw_%out_status+0 as i32
508
+ EXPAND PROCESS_EXIT_STATUS_FROM_RAW %exit_status, __process_wait_exit_value_%out_status
509
+ !__process_wait_exit_value_%out_status
510
+ [END_MACRO]
511
+
512
+ [MACRO] PROCESS_TRY_WAIT_EXIT_STATUS %out_status, %out_ready, %exit_status, %process
513
+ __process_try_wait_exit_ready_slot_%out_ready = stack_alloc 4
514
+ __process_try_wait_exit_code_%out_status = stack_alloc 4
515
+ %out_status = call @sa_std_process_try_wait_raw(%process, &__process_try_wait_exit_ready_slot_%out_ready, &__process_try_wait_exit_code_%out_status)
516
+ %out_ready = load __process_try_wait_exit_ready_slot_%out_ready+0 as i32
517
+ __process_try_wait_exit_value_%out_status = load __process_try_wait_exit_code_%out_status+0 as i32
518
+ EXPAND PROCESS_EXIT_STATUS_FROM_RAW %exit_status, __process_try_wait_exit_value_%out_status
519
+ !__process_try_wait_exit_value_%out_status
520
+ [END_MACRO]
521
+
522
+ [MACRO] PROCESS_KILL %out_status, %process
523
+ %out_status = call @sa_std_process_kill(%process)
524
+ [END_MACRO]
525
+
526
+ [MACRO] PROCESS_SEND_SIGNAL %out_status, %process, %signal
527
+ %out_status = call @sa_std_process_send_signal(%process, %signal)
528
+ [END_MACRO]
529
+
530
+ [MACRO] PROCESS_SEND_PROCESS_GROUP_SIGNAL %out_status, %process, %signal
531
+ %out_status = call @sa_std_process_send_process_group_signal(%process, %signal)
532
+ [END_MACRO]
533
+
534
+ [MACRO] PROCESS_KILL_PROCESS_GROUP %out_status, %process
535
+ %out_status = call @sa_std_process_kill_process_group(%process)
536
+ [END_MACRO]
537
+
538
+ [MACRO] PIDFD_KILL %out_status, %pidfd
539
+ %out_status = call @sa_std_pidfd_kill(%pidfd)
540
+ [END_MACRO]
541
+
542
+ [MACRO] PIDFD_SEND_SIGNAL %out_status, %pidfd, %signal
543
+ %out_status = call @sa_std_pidfd_send_signal(%pidfd, %signal)
544
+ [END_MACRO]
545
+
546
+ [MACRO] PIDFD_WAIT %out_status, %out_code, %pidfd
547
+ __pidfd_wait_code_slot_%out_code = stack_alloc 4
548
+ %out_status = call @sa_std_pidfd_wait(%pidfd, &__pidfd_wait_code_slot_%out_code)
549
+ %out_code = load __pidfd_wait_code_slot_%out_code+0 as u32
550
+ [END_MACRO]
551
+
552
+ [MACRO] PIDFD_WAIT_RAW %out_status, %out_raw, %pidfd
553
+ __pidfd_wait_raw_slot_%out_raw = stack_alloc 4
554
+ %out_status = call @sa_std_pidfd_wait_raw(%pidfd, &__pidfd_wait_raw_slot_%out_raw)
555
+ %out_raw = load __pidfd_wait_raw_slot_%out_raw+0 as i32
556
+ [END_MACRO]
557
+
558
+ [MACRO] PIDFD_TRY_WAIT %out_status, %out_ready, %out_code, %pidfd
559
+ __pidfd_try_wait_ready_slot_%out_ready = stack_alloc 4
560
+ __pidfd_try_wait_code_slot_%out_code = stack_alloc 4
561
+ %out_status = call @sa_std_pidfd_try_wait(%pidfd, &__pidfd_try_wait_ready_slot_%out_ready, &__pidfd_try_wait_code_slot_%out_code)
562
+ %out_ready = load __pidfd_try_wait_ready_slot_%out_ready+0 as i32
563
+ %out_code = load __pidfd_try_wait_code_slot_%out_code+0 as u32
564
+ [END_MACRO]
565
+
566
+ [MACRO] PIDFD_TRY_WAIT_RAW %out_status, %out_ready, %out_raw, %pidfd
567
+ __pidfd_try_wait_raw_ready_slot_%out_ready = stack_alloc 4
568
+ __pidfd_try_wait_raw_slot_%out_raw = stack_alloc 4
569
+ %out_status = call @sa_std_pidfd_try_wait_raw(%pidfd, &__pidfd_try_wait_raw_ready_slot_%out_ready, &__pidfd_try_wait_raw_slot_%out_raw)
570
+ %out_ready = load __pidfd_try_wait_raw_ready_slot_%out_ready+0 as i32
571
+ %out_raw = load __pidfd_try_wait_raw_slot_%out_raw+0 as i32
572
+ [END_MACRO]
573
+
574
+ [MACRO] PIDFD_AS_RAW_FD %out_status, %out_fd, %pidfd
575
+ EXPAND FD_AS_RAW %out_status, %out_fd, %pidfd
576
+ [END_MACRO]
577
+
578
+ [MACRO] PIDFD_AS_FD %out_status, %out_fd, %pidfd
579
+ EXPAND FD_AS_RAW %out_status, %out_fd, %pidfd
580
+ [END_MACRO]
581
+
582
+ [MACRO] PIDFD_INTO_RAW_FD %out_status, %out_fd, %pidfd
583
+ EXPAND FD_INTO_RAW %out_status, %out_fd, %pidfd
584
+ [END_MACRO]
585
+
586
+ [MACRO] PIDFD_FROM_RAW_FD %out_status, %out_pidfd, %fd
587
+ EXPAND FD_FROM_RAW %out_status, %out_pidfd, %fd
588
+ [END_MACRO]
589
+
590
+ [MACRO] PIDFD_CLOSE_RAW_FD %out_status, %fd
591
+ EXPAND FD_CLOSE_RAW %out_status, %fd
592
+ [END_MACRO]
593
+
594
+ [MACRO] PIDFD_INTO_OWNED_FD %out_status, %out_fd_handle, %pidfd
595
+ EXPAND PIDFD_INTO_RAW_FD %out_status, __pidfd_owned_raw_%out_status, %pidfd
596
+ !%out_status
597
+ EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __pidfd_owned_raw_%out_status
598
+ !__pidfd_owned_raw_%out_status
599
+ [END_MACRO]
600
+
601
+ [MACRO] PIDFD_FROM_OWNED_FD %out_status, %out_pidfd, %fd_handle
602
+ EXPAND FD_INTO_RAW %out_status, __pidfd_from_owned_raw_%out_status, %fd_handle
603
+ !%out_status
604
+ EXPAND PIDFD_FROM_RAW_FD %out_status, %out_pidfd, __pidfd_from_owned_raw_%out_status
605
+ !__pidfd_from_owned_raw_%out_status
606
+ [END_MACRO]
607
+
608
+ [MACRO] PROCESS_CHILD_STDOUT_AS_RAW_FD %out_status, %out_fd, %stdout
609
+ EXPAND FD_AS_RAW %out_status, %out_fd, %stdout
610
+ [END_MACRO]
611
+
612
+ [MACRO] PROCESS_CHILD_STDOUT_AS_FD %out_status, %out_fd, %stdout
613
+ EXPAND PROCESS_CHILD_STDOUT_AS_RAW_FD %out_status, %out_fd, %stdout
614
+ [END_MACRO]
615
+
616
+ [MACRO] PROCESS_CHILD_STDOUT_INTO_RAW_FD %out_status, %out_fd, %stdout
617
+ EXPAND FD_INTO_RAW %out_status, %out_fd, %stdout
618
+ [END_MACRO]
619
+
620
+ [MACRO] PROCESS_CHILD_STDOUT_FROM_RAW_FD %out_status, %out_stdout, %fd
621
+ EXPAND FD_FROM_RAW %out_status, %out_stdout, %fd
622
+ [END_MACRO]
623
+
624
+ [MACRO] PROCESS_CHILD_STDOUT_INTO_OWNED_FD %out_status, %out_fd_handle, %stdout
625
+ EXPAND PROCESS_CHILD_STDOUT_INTO_RAW_FD %out_status, __process_child_stdout_owned_raw_%out_status, %stdout
626
+ !%out_status
627
+ EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __process_child_stdout_owned_raw_%out_status
628
+ !__process_child_stdout_owned_raw_%out_status
629
+ [END_MACRO]
630
+
631
+ [MACRO] PROCESS_CHILD_STDOUT_FROM_OWNED_FD %out_status, %out_stdout, %fd_handle
632
+ EXPAND FD_INTO_RAW %out_status, __process_child_stdout_from_owned_raw_%out_status, %fd_handle
633
+ !%out_status
634
+ EXPAND PROCESS_CHILD_STDOUT_FROM_RAW_FD %out_status, %out_stdout, __process_child_stdout_from_owned_raw_%out_status
635
+ !__process_child_stdout_from_owned_raw_%out_status
636
+ [END_MACRO]
637
+
638
+ [MACRO] PROCESS_CHILD_STDERR_AS_RAW_FD %out_status, %out_fd, %stderr
639
+ EXPAND FD_AS_RAW %out_status, %out_fd, %stderr
640
+ [END_MACRO]
641
+
642
+ [MACRO] PROCESS_CHILD_STDERR_AS_FD %out_status, %out_fd, %stderr
643
+ EXPAND PROCESS_CHILD_STDERR_AS_RAW_FD %out_status, %out_fd, %stderr
644
+ [END_MACRO]
645
+
646
+ [MACRO] PROCESS_CHILD_STDERR_INTO_RAW_FD %out_status, %out_fd, %stderr
647
+ EXPAND FD_INTO_RAW %out_status, %out_fd, %stderr
648
+ [END_MACRO]
649
+
650
+ [MACRO] PROCESS_CHILD_STDERR_FROM_RAW_FD %out_status, %out_stderr, %fd
651
+ EXPAND FD_FROM_RAW %out_status, %out_stderr, %fd
652
+ [END_MACRO]
653
+
654
+ [MACRO] PROCESS_CHILD_STDERR_INTO_OWNED_FD %out_status, %out_fd_handle, %stderr
655
+ EXPAND PROCESS_CHILD_STDERR_INTO_RAW_FD %out_status, __process_child_stderr_owned_raw_%out_status, %stderr
656
+ !%out_status
657
+ EXPAND FD_FROM_RAW %out_status, %out_fd_handle, __process_child_stderr_owned_raw_%out_status
658
+ !__process_child_stderr_owned_raw_%out_status
659
+ [END_MACRO]
660
+
661
+ [MACRO] PROCESS_CHILD_STDERR_FROM_OWNED_FD %out_status, %out_stderr, %fd_handle
662
+ EXPAND FD_INTO_RAW %out_status, __process_child_stderr_from_owned_raw_%out_status, %fd_handle
663
+ !%out_status
664
+ EXPAND PROCESS_CHILD_STDERR_FROM_RAW_FD %out_status, %out_stderr, __process_child_stderr_from_owned_raw_%out_status
665
+ !__process_child_stderr_from_owned_raw_%out_status
666
+ [END_MACRO]
667
+
668
+ [MACRO] PROCESS_READ_STDOUT %out_status, %out_len, %process, %buf, %cap
669
+ __process_stdout_len_slot_%out_len = stack_alloc 8
670
+ %out_status = call @sa_std_process_read_stdout(%process, &%buf, %cap, &__process_stdout_len_slot_%out_len)
671
+ %out_len = load __process_stdout_len_slot_%out_len+0 as u64
672
+ [END_MACRO]
673
+
674
+ [MACRO] PROCESS_READ_STDERR %out_status, %out_len, %process, %buf, %cap
675
+ __process_stderr_len_slot_%out_len = stack_alloc 8
676
+ %out_status = call @sa_std_process_read_stderr(%process, &%buf, %cap, &__process_stderr_len_slot_%out_len)
677
+ %out_len = load __process_stderr_len_slot_%out_len+0 as u64
678
+ [END_MACRO]
679
+
680
+ [MACRO] PROCESS_EXEC_CAPTURE %out_status, %out_code, %out_stdout, %out_stderr, %argv, %argv_len
681
+ __process_capture_code_slot_%out_code = stack_alloc 4
682
+ __process_capture_stdout_slot_%out_stdout = stack_alloc 8
683
+ __process_capture_stderr_slot_%out_stderr = stack_alloc 8
684
+ %out_status = call @sa_std_process_exec_capture(&%argv, %argv_len, &__process_capture_code_slot_%out_code, &__process_capture_stdout_slot_%out_stdout, &__process_capture_stderr_slot_%out_stderr)
685
+ %out_code = load __process_capture_code_slot_%out_code+0 as u32
686
+ %out_stdout = load __process_capture_stdout_slot_%out_stdout+0 as u64
687
+ %out_stderr = load __process_capture_stderr_slot_%out_stderr+0 as u64
688
+ [END_MACRO]
689
+
690
+ [MACRO] PROCESS_EXEC_CAPTURE_OUTPUT %out_status, %output, %argv, %argv_len
691
+ __process_capture_output_status_%output = stack_alloc ProcessExitStatus_SIZE
692
+ EXPAND PROCESS_EXEC_CAPTURE %out_status, __process_capture_output_code_%output, __process_capture_output_stdout_handle_%output, __process_capture_output_stderr_handle_%output, %argv, %argv_len
693
+ EXPAND PROCESS_EXIT_STATUS_NEW __process_capture_output_status_%output, __process_capture_output_code_%output
694
+ EXPAND PROCESS_OUTPUT_NEW %output, __process_capture_output_status_%output, __process_capture_output_stdout_handle_%output, __process_capture_output_stderr_handle_%output
695
+ !__process_capture_output_stderr_handle_%output
696
+ !__process_capture_output_stdout_handle_%output
697
+ !__process_capture_output_code_%output
698
+ [END_MACRO]
699
+
700
+ [MACRO] PROCESS_EXEC_CAPTURE_CWD %out_status, %out_code, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len
701
+ __process_capture_cwd_code_slot_%out_code = stack_alloc 4
702
+ __process_capture_cwd_stdout_slot_%out_stdout = stack_alloc 8
703
+ __process_capture_cwd_stderr_slot_%out_stderr = stack_alloc 8
704
+ %out_status = call @sa_std_process_exec_capture_cwd(&%argv, %argv_len, &%cwd, %cwd_len, &__process_capture_cwd_code_slot_%out_code, &__process_capture_cwd_stdout_slot_%out_stdout, &__process_capture_cwd_stderr_slot_%out_stderr)
705
+ %out_code = load __process_capture_cwd_code_slot_%out_code+0 as u32
706
+ %out_stdout = load __process_capture_cwd_stdout_slot_%out_stdout+0 as u64
707
+ %out_stderr = load __process_capture_cwd_stderr_slot_%out_stderr+0 as u64
708
+ [END_MACRO]
709
+
710
+ [MACRO] PROCESS_EXEC_CAPTURE_OUTPUT_CWD %out_status, %output, %argv, %argv_len, %cwd, %cwd_len
711
+ __process_capture_cwd_output_status_%output = stack_alloc ProcessExitStatus_SIZE
712
+ EXPAND PROCESS_EXEC_CAPTURE_CWD %out_status, __process_capture_cwd_output_code_%output, __process_capture_cwd_output_stdout_handle_%output, __process_capture_cwd_output_stderr_handle_%output, %argv, %argv_len, %cwd, %cwd_len
713
+ EXPAND PROCESS_EXIT_STATUS_NEW __process_capture_cwd_output_status_%output, __process_capture_cwd_output_code_%output
714
+ EXPAND PROCESS_OUTPUT_NEW %output, __process_capture_cwd_output_status_%output, __process_capture_cwd_output_stdout_handle_%output, __process_capture_cwd_output_stderr_handle_%output
715
+ !__process_capture_cwd_output_stderr_handle_%output
716
+ !__process_capture_cwd_output_stdout_handle_%output
717
+ !__process_capture_cwd_output_code_%output
718
+ [END_MACRO]
719
+
720
+ [MACRO] PROCESS_CLOSE %out_status, %process
721
+ %out_status = call @sa_std_process_close(%process)
722
+ [END_MACRO]
723
+
724
+ // Concrete Command-style SSA config builder over PROCESS_*_COMMAND_EXT.
725
+ // Builder state is propagating scalar flags only. Callers still pass addressable
726
+ // cwd/arg0 buffers into STATUS/SPAWN (use stack_alloc dummies when unused).
727
+ // This does not model env maps, pipe Stdio objects, or a heap Command value.
728
+
729
+ [MACRO] PROCESS_COMMAND_BUILDER_NEW %out_cwd_len, %out_has_cwd, %out_arg0_len, %out_has_arg0, %out_process_group, %out_has_process_group, %out_setsid
730
+ %out_cwd_len = add 0, 0
731
+ %out_has_cwd = add 0, 0
732
+ %out_arg0_len = add 0, 0
733
+ %out_has_arg0 = add 0, 0
734
+ %out_process_group = add 0, 0
735
+ %out_has_process_group = add 0, 0
736
+ %out_setsid = add 0, 0
737
+ [END_MACRO]
738
+
739
+ [MACRO] PROCESS_COMMAND_BUILDER_WITH_CURRENT_DIR %out_cwd_len, %out_has_cwd, %out_arg0_len, %out_has_arg0, %out_process_group, %out_has_process_group, %out_setsid, %in_cwd_len, %in_has_cwd, %in_arg0_len, %in_has_arg0, %in_process_group, %in_has_process_group, %in_setsid, %cwd_len
740
+ %out_cwd_len = add 0, %cwd_len
741
+ %out_has_cwd = add 0, 1
742
+ %out_arg0_len = add 0, %in_arg0_len
743
+ %out_has_arg0 = add 0, %in_has_arg0
744
+ %out_process_group = add 0, %in_process_group
745
+ %out_has_process_group = add 0, %in_has_process_group
746
+ %out_setsid = add 0, %in_setsid
747
+ !%in_cwd_len
748
+ !%in_has_cwd
749
+ [END_MACRO]
750
+
751
+ [MACRO] PROCESS_COMMAND_BUILDER_WITH_ARG0 %out_cwd_len, %out_has_cwd, %out_arg0_len, %out_has_arg0, %out_process_group, %out_has_process_group, %out_setsid, %in_cwd_len, %in_has_cwd, %in_arg0_len, %in_has_arg0, %in_process_group, %in_has_process_group, %in_setsid, %arg0_len
752
+ %out_cwd_len = add 0, %in_cwd_len
753
+ %out_has_cwd = add 0, %in_has_cwd
754
+ %out_arg0_len = add 0, %arg0_len
755
+ %out_has_arg0 = add 0, 1
756
+ %out_process_group = add 0, %in_process_group
757
+ %out_has_process_group = add 0, %in_has_process_group
758
+ %out_setsid = add 0, %in_setsid
759
+ !%in_arg0_len
760
+ !%in_has_arg0
761
+ [END_MACRO]
762
+
763
+ [MACRO] PROCESS_COMMAND_BUILDER_WITH_PROCESS_GROUP %out_cwd_len, %out_has_cwd, %out_arg0_len, %out_has_arg0, %out_process_group, %out_has_process_group, %out_setsid, %in_cwd_len, %in_has_cwd, %in_arg0_len, %in_has_arg0, %in_process_group, %in_has_process_group, %in_setsid, %process_group
764
+ %out_cwd_len = add 0, %in_cwd_len
765
+ %out_has_cwd = add 0, %in_has_cwd
766
+ %out_arg0_len = add 0, %in_arg0_len
767
+ %out_has_arg0 = add 0, %in_has_arg0
768
+ %out_process_group = add 0, %process_group
769
+ %out_has_process_group = add 0, 1
770
+ %out_setsid = add 0, %in_setsid
771
+ !%in_process_group
772
+ !%in_has_process_group
773
+ [END_MACRO]
774
+
775
+ [MACRO] PROCESS_COMMAND_BUILDER_WITH_SETSID %out_cwd_len, %out_has_cwd, %out_arg0_len, %out_has_arg0, %out_process_group, %out_has_process_group, %out_setsid, %in_cwd_len, %in_has_cwd, %in_arg0_len, %in_has_arg0, %in_process_group, %in_has_process_group, %in_setsid, %flag
776
+ __process_cmd_setsid_zero_%out_setsid = eq %flag, 0
777
+ br __process_cmd_setsid_zero_%out_setsid -> L_PROCESS_CMD_SETSID_OFF_%out_setsid, L_PROCESS_CMD_SETSID_ON_%out_setsid
778
+ L_PROCESS_CMD_SETSID_OFF_%out_setsid:
779
+ %out_cwd_len = add 0, %in_cwd_len
780
+ %out_has_cwd = add 0, %in_has_cwd
781
+ %out_arg0_len = add 0, %in_arg0_len
782
+ %out_has_arg0 = add 0, %in_has_arg0
783
+ %out_process_group = add 0, %in_process_group
784
+ %out_has_process_group = add 0, %in_has_process_group
785
+ %out_setsid = add 0, 0
786
+ !__process_cmd_setsid_zero_%out_setsid
787
+ jmp L_PROCESS_CMD_SETSID_END_%out_setsid
788
+ L_PROCESS_CMD_SETSID_ON_%out_setsid:
789
+ %out_cwd_len = add 0, %in_cwd_len
790
+ %out_has_cwd = add 0, %in_has_cwd
791
+ %out_arg0_len = add 0, %in_arg0_len
792
+ %out_has_arg0 = add 0, %in_has_arg0
793
+ %out_process_group = add 0, %in_process_group
794
+ %out_has_process_group = add 0, %in_has_process_group
795
+ %out_setsid = add 0, 1
796
+ !__process_cmd_setsid_zero_%out_setsid
797
+ jmp L_PROCESS_CMD_SETSID_END_%out_setsid
798
+ L_PROCESS_CMD_SETSID_END_%out_setsid:
799
+ !%in_setsid
800
+ [END_MACRO]
801
+
802
+ [MACRO] PROCESS_COMMAND_BUILDER_STATUS %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
803
+ EXPAND PROCESS_RUN_COMMAND_EXT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
804
+ [END_MACRO]
805
+
806
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
807
+ EXPAND PROCESS_SPAWN_COMMAND_EXT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
808
+ [END_MACRO]
809
+
810
+ [MACRO] PROCESS_COMMAND_BUILDER_STATUS_PIDFD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
811
+ EXPAND PROCESS_RUN_COMMAND_EXT_PIDFD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
812
+ [END_MACRO]
813
+
814
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_PIDFD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
815
+ EXPAND PROCESS_SPAWN_COMMAND_EXT_PIDFD %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
816
+ [END_MACRO]
817
+
818
+ [MACRO] PROCESS_COMMAND_BUILDER_STATUS_UID_GID %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
819
+ EXPAND PROCESS_RUN_COMMAND_EXT_UID_GID %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
820
+ [END_MACRO]
821
+
822
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_UID_GID %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
823
+ EXPAND PROCESS_SPAWN_COMMAND_EXT_UID_GID %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
824
+ [END_MACRO]
825
+
826
+ [MACRO] PROCESS_COMMAND_BUILDER_STATUS_GROUPS %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
827
+ EXPAND PROCESS_RUN_COMMAND_EXT_GROUPS %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
828
+ [END_MACRO]
829
+
830
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_GROUPS %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
831
+ EXPAND PROCESS_SPAWN_COMMAND_EXT_GROUPS %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
832
+ [END_MACRO]
833
+
834
+ [MACRO] PROCESS_COMMAND_BUILDER_STATUS_CHROOT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
835
+ EXPAND PROCESS_RUN_COMMAND_EXT_CHROOT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
836
+ [END_MACRO]
837
+
838
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_CHROOT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
839
+ EXPAND PROCESS_SPAWN_COMMAND_EXT_CHROOT %out_status, %out_process, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
840
+ [END_MACRO]
841
+
842
+ [MACRO] PROCESS_COMMAND_BUILDER_EXEC %out_status, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid, %groups, %groups_len, %has_groups, %chroot, %chroot_len, %has_chroot
843
+ EXPAND PROCESS_EXEC_COMMAND_EXT %out_status, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid, %groups, %groups_len, %has_groups, %chroot, %chroot_len, %has_chroot
844
+ [END_MACRO]
845
+
846
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_STREAM %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
847
+ EXPAND PROCESS_SPAWN_STREAM_COMMAND_EXT %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
848
+ [END_MACRO]
849
+
850
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_STREAM_PIDFD %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
851
+ EXPAND PROCESS_SPAWN_STREAM_COMMAND_EXT_PIDFD %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %create_pidfd
852
+ [END_MACRO]
853
+
854
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_STREAM_UID_GID %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
855
+ EXPAND PROCESS_SPAWN_STREAM_COMMAND_EXT_UID_GID %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %uid, %has_uid, %gid, %has_gid
856
+ [END_MACRO]
857
+
858
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_STREAM_GROUPS %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
859
+ EXPAND PROCESS_SPAWN_STREAM_COMMAND_EXT_GROUPS %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %groups, %groups_len, %has_groups
860
+ [END_MACRO]
861
+
862
+ [MACRO] PROCESS_COMMAND_BUILDER_SPAWN_STREAM_CHROOT %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
863
+ EXPAND PROCESS_SPAWN_STREAM_COMMAND_EXT_CHROOT %out_status, %out_process, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid, %chroot, %chroot_len, %has_chroot
864
+ [END_MACRO]
865
+
866
+ // Command.output()-style capture over the existing exec_capture ABI.
867
+ // Honors has_cwd/cwd only; arg0/process_group/setsid are not applied because
868
+ // capture runtime paths do not currently expose those CommandExt fields.
869
+
870
+ [MACRO] PROCESS_COMMAND_BUILDER_EXEC_CAPTURE %out_status, %out_code, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
871
+ __process_cmd_cap_has_cwd_%out_status = ne %has_cwd, 0
872
+ br __process_cmd_cap_has_cwd_%out_status -> L_PROCESS_CMD_CAP_CWD_%out_status, L_PROCESS_CMD_CAP_PLAIN_%out_status
873
+
874
+ L_PROCESS_CMD_CAP_CWD_%out_status:
875
+ EXPAND PROCESS_EXEC_CAPTURE_CWD %out_status, %out_code, %out_stdout, %out_stderr, %argv, %argv_len, %cwd, %cwd_len
876
+ !__process_cmd_cap_has_cwd_%out_status
877
+ jmp L_PROCESS_CMD_CAP_END_%out_status
878
+
879
+ L_PROCESS_CMD_CAP_PLAIN_%out_status:
880
+ EXPAND PROCESS_EXEC_CAPTURE %out_status, %out_code, %out_stdout, %out_stderr, %argv, %argv_len
881
+ !__process_cmd_cap_has_cwd_%out_status
882
+
883
+ L_PROCESS_CMD_CAP_END_%out_status:
884
+ [END_MACRO]
885
+
886
+ [MACRO] PROCESS_COMMAND_BUILDER_OUTPUT %out_status, %output, %argv, %argv_len, %cwd, %cwd_len, %has_cwd, %arg0, %arg0_len, %has_arg0, %process_group, %has_process_group, %setsid
887
+ __process_cmd_out_has_cwd_%output = ne %has_cwd, 0
888
+ br __process_cmd_out_has_cwd_%output -> L_PROCESS_CMD_OUT_CWD_%output, L_PROCESS_CMD_OUT_PLAIN_%output
889
+
890
+ L_PROCESS_CMD_OUT_CWD_%output:
891
+ EXPAND PROCESS_EXEC_CAPTURE_OUTPUT_CWD %out_status, %output, %argv, %argv_len, %cwd, %cwd_len
892
+ !__process_cmd_out_has_cwd_%output
893
+ jmp L_PROCESS_CMD_OUT_END_%output
894
+
895
+ L_PROCESS_CMD_OUT_PLAIN_%output:
896
+ EXPAND PROCESS_EXEC_CAPTURE_OUTPUT %out_status, %output, %argv, %argv_len
897
+ !__process_cmd_out_has_cwd_%output
898
+
899
+ L_PROCESS_CMD_OUT_END_%output:
900
+ [END_MACRO]
901
+
902
+ [MACRO] PROCESS_OUTPUT_STDOUT_BYTES %out_ptr, %output
903
+ EXPAND PROCESS_OUTPUT_STDOUT_DATA %out_ptr, %output
904
+ [END_MACRO]
905
+
906
+ [MACRO] PROCESS_OUTPUT_STDERR_BYTES %out_ptr, %output
907
+ EXPAND PROCESS_OUTPUT_STDERR_DATA %out_ptr, %output
908
+ [END_MACRO]
909
+
910
+ [MACRO] PROCESS_OUTPUT_STDOUT_BYTE_LEN %out_len, %output
911
+ EXPAND PROCESS_OUTPUT_STDOUT_LEN %out_len, %output
912
+ [END_MACRO]
913
+
914
+ [MACRO] PROCESS_OUTPUT_STDERR_BYTE_LEN %out_len, %output
915
+ EXPAND PROCESS_OUTPUT_STDERR_LEN %out_len, %output
916
+ [END_MACRO]