@salang/sa 0.1.3 → 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.
- package/bin/sa.js +13 -1
- package/package.json +8 -7
- package/sa_std/alloc/layout.sal +12 -0
- package/sa_std/alloc/prelude.sa +1 -0
- package/sa_std/alloc/prelude.sal +1 -0
- package/sa_std/alloc/string.sa +3 -0
- package/sa_std/alloc/vec.sa +684 -0
- package/sa_std/alloc/vec.sal +4 -0
- package/sa_std/any.sa +130 -0
- package/sa_std/any.sal +23 -0
- package/sa_std/array.sa +1876 -0
- package/sa_std/ascii.sa +2 -0
- package/sa_std/ascii.sal +1 -0
- package/sa_std/async.sla +116 -0
- package/sa_std/binary_heap.sa +3003 -0
- package/sa_std/binary_heap.sal +7 -0
- package/sa_std/borrow.sa +171 -0
- package/sa_std/borrow.sal +13 -0
- package/sa_std/btree_map.sa +2210 -0
- package/sa_std/btree_map.sal +11 -0
- package/sa_std/btree_set.sa +1072 -0
- package/sa_std/btree_set.sal +6 -0
- package/sa_std/char.sa +1309 -0
- package/sa_std/char.sal +50 -0
- package/sa_std/cmp.sa +554 -0
- package/sa_std/cmp.sal +14 -0
- package/sa_std/collections/binary_heap.sa +1 -0
- package/sa_std/collections/btree_map.sa +1 -0
- package/sa_std/collections/btree_set.sa +1 -0
- package/sa_std/collections/hashmap.sa +1 -0
- package/sa_std/collections/hashset.sa +1 -0
- package/sa_std/collections/linked_list.sa +1120 -0
- package/sa_std/collections/linked_list.sal +10 -0
- package/sa_std/collections/prelude.sa +7 -0
- package/sa_std/collections/prelude.sal +1 -0
- package/sa_std/collections/vec_deque.sa +1 -0
- package/sa_std/collections.sal +13 -0
- package/sa_std/convert.sa +1115 -0
- package/sa_std/convert.sal +24 -0
- package/sa_std/core/arc.sa +233 -0
- package/sa_std/core/arc.sal +4 -0
- package/sa_std/core/ascii.sa +784 -0
- package/sa_std/core/ascii.sal +34 -0
- package/sa_std/core/bit.sa +41 -0
- package/sa_std/core/box.sa +1 -0
- package/sa_std/core/box.sal +2 -0
- package/sa_std/core/cell.sa +108 -0
- package/sa_std/core/cell.sal +5 -0
- package/sa_std/core/cleanup.sa +26 -0
- package/sa_std/core/control.sa +20 -0
- package/sa_std/core/derive.sa +60 -0
- package/sa_std/core/derive.sal +1 -0
- package/sa_std/core/dispatch.sa +7 -0
- package/sa_std/core/dispatch.sal +5 -0
- package/sa_std/core/future.sa +777 -0
- package/sa_std/core/future.sal +73 -0
- package/sa_std/core/hash.sa +48 -0
- package/sa_std/core/iter.sa +2805 -0
- package/sa_std/core/iter.sal +4 -0
- package/sa_std/core/loop.sa +60 -0
- package/sa_std/core/mem.sa +220 -0
- package/sa_std/core/option.sa +825 -0
- package/sa_std/core/option.sal +11 -0
- package/sa_std/core/panic.sa +23 -0
- package/sa_std/core/panic.sal +12 -0
- package/sa_std/core/prelude.sa +18 -0
- package/sa_std/core/prelude.sal +18 -0
- package/sa_std/core/rc.sa +225 -0
- package/sa_std/core/rc.sal +4 -0
- package/sa_std/core/refcell.sa +283 -0
- package/sa_std/core/refcell.sal +13 -0
- package/sa_std/core/result.sa +708 -0
- package/sa_std/core/result.sal +6 -0
- package/sa_std/core/rust_patterns.sal +295 -0
- package/sa_std/core/sa_core.sa +84 -0
- package/sa_std/core/slice.sa +4021 -0
- package/sa_std/core/slice.sal +7 -0
- package/sa_std/core/task.sa +112 -0
- package/sa_std/core/task.sal +15 -0
- package/sa_std/core/trait_object.sa +26 -0
- package/sa_std/core/trait_object.sal +4 -0
- package/sa_std/core/waker.sa +289 -0
- package/sa_std/core/waker.sal +31 -0
- package/sa_std/core/weak.sa +2 -0
- package/sa_std/core/weak.sal +4 -0
- package/sa_std/cow.sa +3 -0
- package/sa_std/cow.sal +2 -0
- package/sa_std/cstring.sa +3 -0
- package/sa_std/cstring.sal +2 -0
- package/sa_std/default.sa +99 -0
- package/sa_std/duration.sa +3 -0
- package/sa_std/duration.sal +2 -0
- package/sa_std/encoding/json.sa +259 -0
- package/sa_std/encoding/json.sai +54 -0
- package/sa_std/encoding/json.sal +35 -0
- package/sa_std/encoding/prelude.sa +1 -0
- package/sa_std/encoding/prelude.sal +0 -0
- package/sa_std/env.sa +390 -0
- package/sa_std/env.sai +25 -0
- package/sa_std/error.sa +253 -0
- package/sa_std/error.sal +44 -0
- package/sa_std/ffi/cstring.sa +3 -0
- package/sa_std/ffi/cstring.sal +1 -0
- package/sa_std/ffi/prelude.sa +2 -0
- package/sa_std/ffi/prelude.sal +2 -0
- package/sa_std/ffi.sa +635 -0
- package/sa_std/ffi.sal +51 -0
- package/sa_std/fmt.sa +2 -0
- package/sa_std/fmt.sai +18 -0
- package/sa_std/fmt.sal +35 -0
- package/sa_std/fs.sa +1023 -0
- package/sa_std/fs.sai +127 -0
- package/sa_std/fs.sal +51 -0
- package/sa_std/future.sa +2 -0
- package/sa_std/future.sal +1 -0
- package/sa_std/hash.sa +1486 -0
- package/sa_std/hash.sal +13 -0
- package/sa_std/hashmap.sa +1962 -0
- package/sa_std/hashmap.sal +20 -0
- package/sa_std/hashset.sa +1004 -0
- package/sa_std/hashset.sal +18 -0
- package/sa_std/http2.sa +78 -0
- package/sa_std/http2.sai +26 -0
- package/sa_std/http2.sal +36 -0
- package/sa_std/instant.sa +3 -0
- package/sa_std/instant.sal +2 -0
- package/sa_std/io/buf_reader.sa +43 -0
- package/sa_std/io/buf_writer.sa +35 -0
- package/sa_std/io/bufio.sa +4 -0
- package/sa_std/io/bufio.sal +4 -0
- package/sa_std/io/prelude.sa +1 -0
- package/sa_std/io/prelude.sal +1 -0
- package/sa_std/io/print.sa +2 -0
- package/sa_std/io/print.sai +3 -0
- package/sa_std/io.sa +925 -0
- package/sa_std/io.sai +25 -0
- package/sa_std/io.sal +84 -0
- package/sa_std/iter.sa +2 -0
- package/sa_std/iter.sal +1 -0
- package/sa_std/join_handle.sa +3 -0
- package/sa_std/join_handle.sal +2 -0
- package/sa_std/libsa_async.sa +80 -0
- package/sa_std/m_async.sa +137 -0
- package/sa_std/m_async.sal +30 -0
- package/sa_std/m_async.sla +2 -0
- package/sa_std/manually_drop.sa +3 -0
- package/sa_std/manually_drop.sal +2 -0
- package/sa_std/marker/phantom_data.sa +3 -0
- package/sa_std/marker/phantom_data.sal +1 -0
- package/sa_std/marker/prelude.sa +4 -0
- package/sa_std/marker/prelude.sal +4 -0
- package/sa_std/marker.sa +220 -0
- package/sa_std/marker.sal +15 -0
- package/sa_std/math.sa +84 -0
- package/sa_std/math.sai +10 -0
- package/sa_std/mem/manually_drop.sa +3 -0
- package/sa_std/mem/manually_drop.sal +1 -0
- package/sa_std/mem/prelude.sa +2 -0
- package/sa_std/mem/prelude.sal +2 -0
- package/sa_std/mem.sa +564 -0
- package/sa_std/mem.sal +40 -0
- package/sa_std/modstate.sai +19 -0
- package/sa_std/net.sa +4227 -0
- package/sa_std/net.sai +239 -0
- package/sa_std/net.sal +159 -0
- package/sa_std/netx.sa +85 -0
- package/sa_std/netx.sai +11 -0
- package/sa_std/netx.sal +39 -0
- package/sa_std/nonzero.sa +3 -0
- package/sa_std/nonzero.sal +2 -0
- package/sa_std/num/nonzero.sa +3 -0
- package/sa_std/num/nonzero.sal +1 -0
- package/sa_std/num/prelude.sa +3 -0
- package/sa_std/num/prelude.sal +3 -0
- package/sa_std/num.sa +17302 -0
- package/sa_std/num.sai +11 -0
- package/sa_std/num.sal +341 -0
- package/sa_std/ops.sa +1884 -0
- package/sa_std/ops.sal +68 -0
- package/sa_std/option.sa +2 -0
- package/sa_std/option.sal +1 -0
- package/sa_std/os/fd.sa +96 -0
- package/sa_std/os/fd.sai +7 -0
- package/sa_std/os/fd.sal +11 -0
- package/sa_std/os/prelude.sa +2 -0
- package/sa_std/os/prelude.sal +1 -0
- package/sa_std/os/unix_ffi.sa +271 -0
- package/sa_std/panic.sa +1 -0
- package/sa_std/panic.sal +1 -0
- package/sa_std/path.sa +3170 -0
- package/sa_std/path.sal +12 -0
- package/sa_std/phantom_data.sa +3 -0
- package/sa_std/phantom_data.sal +2 -0
- package/sa_std/pin.sa +79 -0
- package/sa_std/pin.sal +5 -0
- package/sa_std/plugin_async.sa +90 -0
- package/sa_std/plugin_async.sal +29 -0
- package/sa_std/plugin_async.sla +4 -0
- package/sa_std/plugin_http_async.sa +46 -0
- package/sa_std/plugin_http_server.sa +61 -0
- package/sa_std/plugin_http_server.sla +2 -0
- package/sa_std/plugin_sqlite.sa +106 -0
- package/sa_std/plugin_sqlite.sla +2 -0
- package/sa_std/prelude.sa +60 -0
- package/sa_std/prelude.sal +55 -0
- package/sa_std/process.sa +916 -0
- package/sa_std/process.sai +57 -0
- package/sa_std/process.sal +27 -0
- package/sa_std/ptr.sa +503 -0
- package/sa_std/ptr.sal +2 -0
- package/sa_std/result.sa +2 -0
- package/sa_std/result.sal +1 -0
- package/sa_std/rust_core.sa +51 -0
- package/sa_std/rust_core.sal +26 -0
- package/sa_std/sa.mod +7 -0
- package/sa_std/sort.sa +156 -0
- package/sa_std/str.sla +13 -0
- package/sa_std/string.sa +12240 -0
- package/sa_std/string.sai +25 -0
- package/sa_std/string.sal +17 -0
- package/sa_std/string_format.sa +269 -0
- package/sa_std/sync/atomic.sa +1500 -0
- package/sa_std/sync/atomic.sal +45 -0
- package/sa_std/sync/barrier.sa +105 -0
- package/sa_std/sync/barrier.sal +7 -0
- package/sa_std/sync/condvar.sa +240 -0
- package/sa_std/sync/condvar.sal +4 -0
- package/sa_std/sync/mpsc.sa +758 -0
- package/sa_std/sync/mpsc.sal +42 -0
- package/sa_std/sync/mpsc_list.sa +255 -0
- package/sa_std/sync/mpsc_list.sal +3 -0
- package/sa_std/sync/mutex.sa +182 -0
- package/sa_std/sync/mutex.sal +7 -0
- package/sa_std/sync/once.sa +371 -0
- package/sa_std/sync/once.sal +31 -0
- package/sa_std/sync/poison.sa +36 -0
- package/sa_std/sync/poison.sal +11 -0
- package/sa_std/sync/prelude.sa +8 -0
- package/sa_std/sync/prelude.sal +7 -0
- package/sa_std/sync/rwlock.sa +369 -0
- package/sa_std/sync/rwlock.sal +13 -0
- package/sa_std/task.sa +2 -0
- package/sa_std/task.sal +1 -0
- package/sa_std/term.sa +2 -0
- package/sa_std/term.sai +10 -0
- package/sa_std/term.sal +33 -0
- package/sa_std/testing/assert.sai +4 -0
- package/sa_std/testing/mock_io.sa +174 -0
- package/sa_std/testing/mock_io.sal +5 -0
- package/sa_std/testing/prelude.sa +2 -0
- package/sa_std/testing/prelude.sal +1 -0
- package/sa_std/text/prelude.sa +1 -0
- package/sa_std/text/prelude.sal +1 -0
- package/sa_std/text/regex.sa +2 -0
- package/sa_std/text/regex.sai +9 -0
- package/sa_std/text/regex.sal +33 -0
- package/sa_std/thread/join_handle.sa +3 -0
- package/sa_std/thread/join_handle.sal +1 -0
- package/sa_std/thread/prelude.sa +4 -0
- package/sa_std/thread/prelude.sal +3 -0
- package/sa_std/thread.sa +160 -0
- package/sa_std/thread.sai +11 -0
- package/sa_std/thread.sal +4 -0
- package/sa_std/thread_local.sa +45 -0
- package/sa_std/thread_local.sai +9 -0
- package/sa_std/time/duration.sa +3 -0
- package/sa_std/time/duration.sal +1 -0
- package/sa_std/time/instant.sa +3 -0
- package/sa_std/time/instant.sal +1 -0
- package/sa_std/time/prelude.sa +4 -0
- package/sa_std/time/prelude.sal +4 -0
- package/sa_std/time.sa +850 -0
- package/sa_std/time.sai +37 -0
- package/sa_std/time.sal +35 -0
- package/sa_std/time.sla +67 -0
- package/sa_std/tls_client.sai +39 -0
- package/sa_std/vec.sa +5754 -0
- package/sa_std/vec.sal +1 -0
- package/sa_std/vec_deque.sa +4925 -0
- package/sa_std/vec_deque.sal +8 -0
- package/sa_std/vec_runtime_macros.sa +11 -0
- package/sa_std/ws_client.sai +57 -0
package/sa_std/path.sa
ADDED
|
@@ -0,0 +1,3170 @@
|
|
|
1
|
+
// POSIX-like path helpers over Slice values.
|
|
2
|
+
// Trailing separators are ignored; callers own the returned Slice and must ! it.
|
|
3
|
+
@import "core/slice.sal"
|
|
4
|
+
@import "core/slice.sa"
|
|
5
|
+
@import "fs.sa"
|
|
6
|
+
@import "string.sa"
|
|
7
|
+
@import "os/unix_ffi.sa"
|
|
8
|
+
@import "num.sa"
|
|
9
|
+
|
|
10
|
+
@const PATH_SEPARATOR = utf8:"/"
|
|
11
|
+
|
|
12
|
+
[MACRO] PATH_MAKE_EMPTY %out_slice
|
|
13
|
+
%out_slice = alloc Slice_SIZE
|
|
14
|
+
__path_empty_ptr = 0 as ptr
|
|
15
|
+
__path_empty_len = 0 as u64
|
|
16
|
+
EXPAND SLICE_NEW %out_slice, __path_empty_ptr, __path_empty_len
|
|
17
|
+
!__path_empty_ptr
|
|
18
|
+
!__path_empty_len
|
|
19
|
+
[END_MACRO]
|
|
20
|
+
|
|
21
|
+
[MACRO] PATH_BASENAME %out_slice, %path_slice
|
|
22
|
+
__path_ptr = load %path_slice+Slice_ptr as ptr
|
|
23
|
+
__path_len = load %path_slice+Slice_len as u64
|
|
24
|
+
__path_end_slot = stack_alloc 8
|
|
25
|
+
__path_cursor_slot = stack_alloc 8
|
|
26
|
+
store __path_end_slot+0, __path_len as u64
|
|
27
|
+
__path_is_empty = eq __path_len, 0
|
|
28
|
+
br __path_is_empty -> L_PATH_BASENAME_EMPTY_%out_slice, L_PATH_BASENAME_TRIM_%out_slice
|
|
29
|
+
|
|
30
|
+
L_PATH_BASENAME_TRIM_%out_slice:
|
|
31
|
+
__path_end = load __path_end_slot+0 as u64
|
|
32
|
+
__path_end_is_zero = eq __path_end, 0
|
|
33
|
+
br __path_end_is_zero -> L_PATH_BASENAME_ROOT_%out_slice, L_PATH_BASENAME_CHECK_%out_slice
|
|
34
|
+
|
|
35
|
+
L_PATH_BASENAME_CHECK_%out_slice:
|
|
36
|
+
__path_prev_end = sub __path_end, 1
|
|
37
|
+
__path_ch_ip = ptr_add __path_ptr, __path_prev_end
|
|
38
|
+
__path_ch = load __path_ch_ip+0 as u8
|
|
39
|
+
__path_is_slash = eq __path_ch, 47
|
|
40
|
+
br __path_is_slash -> L_PATH_BASENAME_TRIM_NEXT_%out_slice, L_PATH_BASENAME_SCAN_%out_slice
|
|
41
|
+
|
|
42
|
+
L_PATH_BASENAME_TRIM_NEXT_%out_slice:
|
|
43
|
+
store __path_end_slot+0, __path_prev_end as u64
|
|
44
|
+
!__path_prev_end
|
|
45
|
+
!__path_ch_ip
|
|
46
|
+
!__path_ch
|
|
47
|
+
!__path_is_slash
|
|
48
|
+
!__path_end
|
|
49
|
+
!__path_end_is_zero
|
|
50
|
+
jmp L_PATH_BASENAME_TRIM_%out_slice
|
|
51
|
+
|
|
52
|
+
L_PATH_BASENAME_SCAN_%out_slice:
|
|
53
|
+
store __path_cursor_slot+0, __path_end as u64
|
|
54
|
+
!__path_prev_end
|
|
55
|
+
!__path_ch_ip
|
|
56
|
+
!__path_ch
|
|
57
|
+
!__path_is_slash
|
|
58
|
+
!__path_end_is_zero
|
|
59
|
+
jmp L_PATH_BASENAME_SCAN_LOOP_%out_slice
|
|
60
|
+
|
|
61
|
+
L_PATH_BASENAME_SCAN_LOOP_%out_slice:
|
|
62
|
+
__path_cursor = load __path_cursor_slot+0 as u64
|
|
63
|
+
__path_cursor_is_zero = eq __path_cursor, 0
|
|
64
|
+
br __path_cursor_is_zero -> L_PATH_BASENAME_NO_SLASH_%out_slice, L_PATH_BASENAME_SCAN_CHECK_%out_slice
|
|
65
|
+
|
|
66
|
+
L_PATH_BASENAME_SCAN_CHECK_%out_slice:
|
|
67
|
+
__path_prev = sub __path_cursor, 1
|
|
68
|
+
__path_ch_ip = ptr_add __path_ptr, __path_prev
|
|
69
|
+
__path_ch = load __path_ch_ip+0 as u8
|
|
70
|
+
__path_is_slash = eq __path_ch, 47
|
|
71
|
+
br __path_is_slash -> L_PATH_BASENAME_FOUND_%out_slice, L_PATH_BASENAME_SCAN_NEXT_%out_slice
|
|
72
|
+
|
|
73
|
+
L_PATH_BASENAME_SCAN_NEXT_%out_slice:
|
|
74
|
+
__path_next_cursor = sub __path_cursor, 1
|
|
75
|
+
store __path_cursor_slot+0, __path_next_cursor as u64
|
|
76
|
+
!__path_cursor
|
|
77
|
+
!__path_cursor_is_zero
|
|
78
|
+
!__path_prev
|
|
79
|
+
!__path_ch_ip
|
|
80
|
+
!__path_ch
|
|
81
|
+
!__path_is_slash
|
|
82
|
+
!__path_next_cursor
|
|
83
|
+
jmp L_PATH_BASENAME_SCAN_LOOP_%out_slice
|
|
84
|
+
|
|
85
|
+
L_PATH_BASENAME_FOUND_%out_slice:
|
|
86
|
+
__path_start = add __path_cursor, 0
|
|
87
|
+
__path_basename_len = sub __path_end, __path_start
|
|
88
|
+
EXPAND STR_SLICE %out_slice, %path_slice, __path_start, __path_basename_len
|
|
89
|
+
!__path_basename_len
|
|
90
|
+
!__path_cursor
|
|
91
|
+
!__path_cursor_is_zero
|
|
92
|
+
!__path_prev
|
|
93
|
+
!__path_ch_ip
|
|
94
|
+
!__path_ch
|
|
95
|
+
!__path_is_slash
|
|
96
|
+
!__path_end
|
|
97
|
+
jmp L_PATH_BASENAME_END_%out_slice
|
|
98
|
+
|
|
99
|
+
L_PATH_BASENAME_NO_SLASH_%out_slice:
|
|
100
|
+
__path_start = 0 as u64
|
|
101
|
+
__path_basename_len = add __path_end, 0
|
|
102
|
+
EXPAND STR_SLICE %out_slice, %path_slice, __path_start, __path_basename_len
|
|
103
|
+
!__path_basename_len
|
|
104
|
+
!__path_cursor
|
|
105
|
+
!__path_cursor_is_zero
|
|
106
|
+
!__path_end
|
|
107
|
+
jmp L_PATH_BASENAME_END_%out_slice
|
|
108
|
+
|
|
109
|
+
L_PATH_BASENAME_ROOT_%out_slice:
|
|
110
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, 1
|
|
111
|
+
!__path_end
|
|
112
|
+
!__path_end_is_zero
|
|
113
|
+
jmp L_PATH_BASENAME_END_%out_slice
|
|
114
|
+
|
|
115
|
+
L_PATH_BASENAME_EMPTY_%out_slice:
|
|
116
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
117
|
+
jmp L_PATH_BASENAME_END_%out_slice
|
|
118
|
+
|
|
119
|
+
L_PATH_BASENAME_END_%out_slice:
|
|
120
|
+
!__path_ptr
|
|
121
|
+
!__path_len
|
|
122
|
+
!__path_is_empty
|
|
123
|
+
[END_MACRO]
|
|
124
|
+
|
|
125
|
+
[MACRO] PATH_DIRNAME %out_slice, %path_slice
|
|
126
|
+
__path_ptr = load %path_slice+Slice_ptr as ptr
|
|
127
|
+
__path_len = load %path_slice+Slice_len as u64
|
|
128
|
+
__path_end_slot = stack_alloc 8
|
|
129
|
+
__path_cursor_slot = stack_alloc 8
|
|
130
|
+
store __path_end_slot+0, __path_len as u64
|
|
131
|
+
__path_is_empty = eq __path_len, 0
|
|
132
|
+
br __path_is_empty -> L_PATH_DIRNAME_EMPTY, L_PATH_DIRNAME_TRIM
|
|
133
|
+
|
|
134
|
+
L_PATH_DIRNAME_TRIM:
|
|
135
|
+
__path_end = load __path_end_slot+0 as u64
|
|
136
|
+
__path_end_is_zero = eq __path_end, 0
|
|
137
|
+
br __path_end_is_zero -> L_PATH_DIRNAME_ROOT_FROM_TRIM, L_PATH_DIRNAME_CHECK
|
|
138
|
+
|
|
139
|
+
L_PATH_DIRNAME_CHECK:
|
|
140
|
+
__path_prev_end = sub __path_end, 1
|
|
141
|
+
__path_ch_ip = ptr_add __path_ptr, __path_prev_end
|
|
142
|
+
__path_ch = load __path_ch_ip+0 as u8
|
|
143
|
+
__path_is_slash = eq __path_ch, 47
|
|
144
|
+
br __path_is_slash -> L_PATH_DIRNAME_TRIM_NEXT, L_PATH_DIRNAME_SCAN
|
|
145
|
+
|
|
146
|
+
L_PATH_DIRNAME_TRIM_NEXT:
|
|
147
|
+
store __path_end_slot+0, __path_prev_end as u64
|
|
148
|
+
!__path_prev_end
|
|
149
|
+
!__path_ch_ip
|
|
150
|
+
!__path_ch
|
|
151
|
+
!__path_is_slash
|
|
152
|
+
!__path_end
|
|
153
|
+
!__path_end_is_zero
|
|
154
|
+
jmp L_PATH_DIRNAME_TRIM
|
|
155
|
+
|
|
156
|
+
L_PATH_DIRNAME_SCAN:
|
|
157
|
+
store __path_cursor_slot+0, __path_end as u64
|
|
158
|
+
!__path_prev_end
|
|
159
|
+
!__path_ch_ip
|
|
160
|
+
!__path_ch
|
|
161
|
+
!__path_is_slash
|
|
162
|
+
!__path_end_is_zero
|
|
163
|
+
jmp L_PATH_DIRNAME_SCAN_LOOP
|
|
164
|
+
|
|
165
|
+
L_PATH_DIRNAME_SCAN_LOOP:
|
|
166
|
+
__path_cursor = load __path_cursor_slot+0 as u64
|
|
167
|
+
__path_cursor_is_zero = eq __path_cursor, 0
|
|
168
|
+
br __path_cursor_is_zero -> L_PATH_DIRNAME_NO_SLASH, L_PATH_DIRNAME_SCAN_CHECK
|
|
169
|
+
|
|
170
|
+
L_PATH_DIRNAME_SCAN_CHECK:
|
|
171
|
+
__path_prev = sub __path_cursor, 1
|
|
172
|
+
__path_ch_ip = ptr_add __path_ptr, __path_prev
|
|
173
|
+
__path_ch = load __path_ch_ip+0 as u8
|
|
174
|
+
__path_is_slash = eq __path_ch, 47
|
|
175
|
+
br __path_is_slash -> L_PATH_DIRNAME_FOUND, L_PATH_DIRNAME_SCAN_NEXT
|
|
176
|
+
|
|
177
|
+
L_PATH_DIRNAME_SCAN_NEXT:
|
|
178
|
+
__path_next_cursor = sub __path_cursor, 1
|
|
179
|
+
store __path_cursor_slot+0, __path_next_cursor as u64
|
|
180
|
+
!__path_cursor
|
|
181
|
+
!__path_cursor_is_zero
|
|
182
|
+
!__path_prev
|
|
183
|
+
!__path_ch_ip
|
|
184
|
+
!__path_ch
|
|
185
|
+
!__path_is_slash
|
|
186
|
+
!__path_next_cursor
|
|
187
|
+
jmp L_PATH_DIRNAME_SCAN_LOOP
|
|
188
|
+
|
|
189
|
+
L_PATH_DIRNAME_FOUND:
|
|
190
|
+
__path_slash_is_root = eq __path_prev, 0
|
|
191
|
+
br __path_slash_is_root -> L_PATH_DIRNAME_ROOT_FROM_SCAN, L_PATH_DIRNAME_PREFIX
|
|
192
|
+
|
|
193
|
+
L_PATH_DIRNAME_PREFIX:
|
|
194
|
+
__path_dirname_len = add __path_prev, 0
|
|
195
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_dirname_len
|
|
196
|
+
!__path_dirname_len
|
|
197
|
+
!__path_slash_is_root
|
|
198
|
+
!__path_cursor
|
|
199
|
+
!__path_cursor_is_zero
|
|
200
|
+
!__path_prev
|
|
201
|
+
!__path_ch_ip
|
|
202
|
+
!__path_ch
|
|
203
|
+
!__path_is_slash
|
|
204
|
+
!__path_end
|
|
205
|
+
jmp L_PATH_DIRNAME_END
|
|
206
|
+
|
|
207
|
+
L_PATH_DIRNAME_ROOT_FROM_SCAN:
|
|
208
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, 1
|
|
209
|
+
!__path_slash_is_root
|
|
210
|
+
!__path_cursor
|
|
211
|
+
!__path_cursor_is_zero
|
|
212
|
+
!__path_prev
|
|
213
|
+
!__path_ch_ip
|
|
214
|
+
!__path_ch
|
|
215
|
+
!__path_is_slash
|
|
216
|
+
!__path_end
|
|
217
|
+
jmp L_PATH_DIRNAME_END
|
|
218
|
+
|
|
219
|
+
L_PATH_DIRNAME_NO_SLASH:
|
|
220
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
221
|
+
!__path_cursor
|
|
222
|
+
!__path_cursor_is_zero
|
|
223
|
+
!__path_end
|
|
224
|
+
jmp L_PATH_DIRNAME_END
|
|
225
|
+
|
|
226
|
+
L_PATH_DIRNAME_ROOT_FROM_TRIM:
|
|
227
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, 1
|
|
228
|
+
!__path_end
|
|
229
|
+
!__path_end_is_zero
|
|
230
|
+
jmp L_PATH_DIRNAME_END
|
|
231
|
+
|
|
232
|
+
L_PATH_DIRNAME_EMPTY:
|
|
233
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
234
|
+
jmp L_PATH_DIRNAME_END
|
|
235
|
+
|
|
236
|
+
L_PATH_DIRNAME_END:
|
|
237
|
+
!__path_ptr
|
|
238
|
+
!__path_len
|
|
239
|
+
!__path_is_empty
|
|
240
|
+
[END_MACRO]
|
|
241
|
+
|
|
242
|
+
[MACRO] PATH_STEM %out_slice, %path_slice
|
|
243
|
+
EXPAND PATH_BASENAME __path_base_%out_slice, %path_slice
|
|
244
|
+
__path_base_ptr = load __path_base_%out_slice+Slice_ptr as ptr
|
|
245
|
+
__path_base_len = load __path_base_%out_slice+Slice_len as u64
|
|
246
|
+
__path_dot_cursor_slot = stack_alloc 8
|
|
247
|
+
store __path_dot_cursor_slot+0, __path_base_len as u64
|
|
248
|
+
jmp L_PATH_STEM_SCAN_%out_slice
|
|
249
|
+
|
|
250
|
+
L_PATH_STEM_SCAN_%out_slice:
|
|
251
|
+
__path_dot_cursor = load __path_dot_cursor_slot+0 as u64
|
|
252
|
+
__path_dot_cursor_is_zero = eq __path_dot_cursor, 0
|
|
253
|
+
br __path_dot_cursor_is_zero -> L_PATH_STEM_NO_DOT_EMPTY_%out_slice, L_PATH_STEM_SCAN_CHECK_%out_slice
|
|
254
|
+
|
|
255
|
+
L_PATH_STEM_SCAN_CHECK_%out_slice:
|
|
256
|
+
__path_dot_prev = sub __path_dot_cursor, 1
|
|
257
|
+
__path_dot_ch_ip = ptr_add __path_base_ptr, __path_dot_prev
|
|
258
|
+
__path_dot_ch = load __path_dot_ch_ip+0 as u8
|
|
259
|
+
__path_is_dot = eq __path_dot_ch, 46
|
|
260
|
+
br __path_is_dot -> L_PATH_STEM_DOT_%out_slice, L_PATH_STEM_SCAN_NEXT_%out_slice
|
|
261
|
+
|
|
262
|
+
L_PATH_STEM_SCAN_NEXT_%out_slice:
|
|
263
|
+
__path_next_dot_cursor = sub __path_dot_cursor, 1
|
|
264
|
+
store __path_dot_cursor_slot+0, __path_next_dot_cursor as u64
|
|
265
|
+
!__path_dot_cursor
|
|
266
|
+
!__path_dot_cursor_is_zero
|
|
267
|
+
!__path_dot_prev
|
|
268
|
+
!__path_dot_ch_ip
|
|
269
|
+
!__path_dot_ch
|
|
270
|
+
!__path_is_dot
|
|
271
|
+
!__path_next_dot_cursor
|
|
272
|
+
jmp L_PATH_STEM_SCAN_%out_slice
|
|
273
|
+
|
|
274
|
+
L_PATH_STEM_DOT_%out_slice:
|
|
275
|
+
__path_leading_dot = eq __path_dot_prev, 0
|
|
276
|
+
br __path_leading_dot -> L_PATH_STEM_NO_DOT_LEADING_%out_slice, L_PATH_STEM_VALID_%out_slice
|
|
277
|
+
|
|
278
|
+
L_PATH_STEM_VALID_%out_slice:
|
|
279
|
+
__path_stem_len = add __path_dot_prev, 0
|
|
280
|
+
EXPAND STR_SLICE %out_slice, __path_base_%out_slice, 0, __path_stem_len
|
|
281
|
+
!__path_stem_len
|
|
282
|
+
!__path_leading_dot
|
|
283
|
+
!__path_dot_cursor
|
|
284
|
+
!__path_dot_cursor_is_zero
|
|
285
|
+
!__path_dot_prev
|
|
286
|
+
!__path_dot_ch_ip
|
|
287
|
+
!__path_dot_ch
|
|
288
|
+
!__path_is_dot
|
|
289
|
+
!__path_base_ptr
|
|
290
|
+
!__path_base_len
|
|
291
|
+
!__path_base_%out_slice
|
|
292
|
+
jmp L_PATH_STEM_END_%out_slice
|
|
293
|
+
|
|
294
|
+
L_PATH_STEM_NO_DOT_EMPTY_%out_slice:
|
|
295
|
+
EXPAND STR_SLICE %out_slice, __path_base_%out_slice, 0, __path_base_len
|
|
296
|
+
!__path_dot_cursor
|
|
297
|
+
!__path_dot_cursor_is_zero
|
|
298
|
+
!__path_base_ptr
|
|
299
|
+
!__path_base_len
|
|
300
|
+
!__path_base_%out_slice
|
|
301
|
+
jmp L_PATH_STEM_END_%out_slice
|
|
302
|
+
|
|
303
|
+
L_PATH_STEM_NO_DOT_LEADING_%out_slice:
|
|
304
|
+
EXPAND STR_SLICE %out_slice, __path_base_%out_slice, 0, __path_base_len
|
|
305
|
+
!__path_leading_dot
|
|
306
|
+
!__path_dot_cursor
|
|
307
|
+
!__path_dot_cursor_is_zero
|
|
308
|
+
!__path_dot_prev
|
|
309
|
+
!__path_dot_ch_ip
|
|
310
|
+
!__path_dot_ch
|
|
311
|
+
!__path_is_dot
|
|
312
|
+
!__path_base_ptr
|
|
313
|
+
!__path_base_len
|
|
314
|
+
!__path_base_%out_slice
|
|
315
|
+
jmp L_PATH_STEM_END_%out_slice
|
|
316
|
+
|
|
317
|
+
L_PATH_STEM_END_%out_slice:
|
|
318
|
+
[END_MACRO]
|
|
319
|
+
|
|
320
|
+
[MACRO] PATH_EXT %out_slice, %path_slice
|
|
321
|
+
EXPAND PATH_BASENAME __path_base_%out_slice, %path_slice
|
|
322
|
+
__path_base_ptr = load __path_base_%out_slice+Slice_ptr as ptr
|
|
323
|
+
__path_base_len = load __path_base_%out_slice+Slice_len as u64
|
|
324
|
+
__path_dot_cursor_slot = stack_alloc 8
|
|
325
|
+
store __path_dot_cursor_slot+0, __path_base_len as u64
|
|
326
|
+
jmp L_PATH_EXT_SCAN_%out_slice
|
|
327
|
+
|
|
328
|
+
L_PATH_EXT_SCAN_%out_slice:
|
|
329
|
+
__path_dot_cursor = load __path_dot_cursor_slot+0 as u64
|
|
330
|
+
__path_dot_cursor_is_zero = eq __path_dot_cursor, 0
|
|
331
|
+
br __path_dot_cursor_is_zero -> L_PATH_EXT_NO_DOT_EMPTY_%out_slice, L_PATH_EXT_SCAN_CHECK_%out_slice
|
|
332
|
+
|
|
333
|
+
L_PATH_EXT_SCAN_CHECK_%out_slice:
|
|
334
|
+
__path_dot_prev = sub __path_dot_cursor, 1
|
|
335
|
+
__path_dot_ch_ip = ptr_add __path_base_ptr, __path_dot_prev
|
|
336
|
+
__path_dot_ch = load __path_dot_ch_ip+0 as u8
|
|
337
|
+
__path_is_dot = eq __path_dot_ch, 46
|
|
338
|
+
br __path_is_dot -> L_PATH_EXT_DOT_%out_slice, L_PATH_EXT_SCAN_NEXT_%out_slice
|
|
339
|
+
|
|
340
|
+
L_PATH_EXT_SCAN_NEXT_%out_slice:
|
|
341
|
+
__path_next_dot_cursor = sub __path_dot_cursor, 1
|
|
342
|
+
store __path_dot_cursor_slot+0, __path_next_dot_cursor as u64
|
|
343
|
+
!__path_dot_cursor
|
|
344
|
+
!__path_dot_cursor_is_zero
|
|
345
|
+
!__path_dot_prev
|
|
346
|
+
!__path_dot_ch_ip
|
|
347
|
+
!__path_dot_ch
|
|
348
|
+
!__path_is_dot
|
|
349
|
+
!__path_next_dot_cursor
|
|
350
|
+
jmp L_PATH_EXT_SCAN_%out_slice
|
|
351
|
+
|
|
352
|
+
L_PATH_EXT_DOT_%out_slice:
|
|
353
|
+
__path_leading_dot = eq __path_dot_prev, 0
|
|
354
|
+
br __path_leading_dot -> L_PATH_EXT_NO_DOT_LEADING_%out_slice, L_PATH_EXT_TRAILING_%out_slice
|
|
355
|
+
|
|
356
|
+
L_PATH_EXT_TRAILING_%out_slice:
|
|
357
|
+
__path_trailing_dot = eq __path_dot_cursor, __path_base_len
|
|
358
|
+
br __path_trailing_dot -> L_PATH_EXT_NO_DOT_TRAILING_%out_slice, L_PATH_EXT_VALID_%out_slice
|
|
359
|
+
|
|
360
|
+
L_PATH_EXT_VALID_%out_slice:
|
|
361
|
+
__path_ext_start = add __path_dot_prev, 1
|
|
362
|
+
__path_ext_len = sub __path_base_len, __path_ext_start
|
|
363
|
+
EXPAND STR_SLICE %out_slice, __path_base_%out_slice, __path_ext_start, __path_ext_len
|
|
364
|
+
!__path_ext_start
|
|
365
|
+
!__path_ext_len
|
|
366
|
+
!__path_trailing_dot
|
|
367
|
+
!__path_leading_dot
|
|
368
|
+
!__path_dot_cursor
|
|
369
|
+
!__path_dot_cursor_is_zero
|
|
370
|
+
!__path_dot_prev
|
|
371
|
+
!__path_dot_ch_ip
|
|
372
|
+
!__path_dot_ch
|
|
373
|
+
!__path_is_dot
|
|
374
|
+
!__path_base_ptr
|
|
375
|
+
!__path_base_len
|
|
376
|
+
!__path_base_%out_slice
|
|
377
|
+
jmp L_PATH_EXT_END_%out_slice
|
|
378
|
+
|
|
379
|
+
L_PATH_EXT_NO_DOT_EMPTY_%out_slice:
|
|
380
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
381
|
+
!__path_dot_cursor
|
|
382
|
+
!__path_dot_cursor_is_zero
|
|
383
|
+
!__path_base_ptr
|
|
384
|
+
!__path_base_len
|
|
385
|
+
!__path_base_%out_slice
|
|
386
|
+
jmp L_PATH_EXT_END_%out_slice
|
|
387
|
+
|
|
388
|
+
L_PATH_EXT_NO_DOT_LEADING_%out_slice:
|
|
389
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
390
|
+
!__path_leading_dot
|
|
391
|
+
!__path_dot_cursor
|
|
392
|
+
!__path_dot_cursor_is_zero
|
|
393
|
+
!__path_dot_prev
|
|
394
|
+
!__path_dot_ch_ip
|
|
395
|
+
!__path_dot_ch
|
|
396
|
+
!__path_is_dot
|
|
397
|
+
!__path_base_ptr
|
|
398
|
+
!__path_base_len
|
|
399
|
+
!__path_base_%out_slice
|
|
400
|
+
jmp L_PATH_EXT_END_%out_slice
|
|
401
|
+
|
|
402
|
+
L_PATH_EXT_NO_DOT_TRAILING_%out_slice:
|
|
403
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
404
|
+
!__path_trailing_dot
|
|
405
|
+
!__path_leading_dot
|
|
406
|
+
!__path_dot_cursor
|
|
407
|
+
!__path_dot_cursor_is_zero
|
|
408
|
+
!__path_dot_prev
|
|
409
|
+
!__path_dot_ch_ip
|
|
410
|
+
!__path_dot_ch
|
|
411
|
+
!__path_is_dot
|
|
412
|
+
!__path_base_ptr
|
|
413
|
+
!__path_base_len
|
|
414
|
+
!__path_base_%out_slice
|
|
415
|
+
jmp L_PATH_EXT_END_%out_slice
|
|
416
|
+
|
|
417
|
+
L_PATH_EXT_END_%out_slice:
|
|
418
|
+
[END_MACRO]
|
|
419
|
+
|
|
420
|
+
[MACRO] PATH_IS_ABSOLUTE %out_bool, %path_slice
|
|
421
|
+
__path_len_%out_bool = load %path_slice+Slice_len as u64
|
|
422
|
+
__path_empty_%out_bool = eq __path_len_%out_bool, 0
|
|
423
|
+
br __path_empty_%out_bool -> L_PATH_IS_ABSOLUTE_FALSE, L_PATH_IS_ABSOLUTE_CHECK
|
|
424
|
+
|
|
425
|
+
L_PATH_IS_ABSOLUTE_CHECK:
|
|
426
|
+
__path_ptr_%out_bool = load %path_slice+Slice_ptr as ptr
|
|
427
|
+
__path_first_%out_bool = load __path_ptr_%out_bool+0 as u8
|
|
428
|
+
%out_bool = eq __path_first_%out_bool, 47
|
|
429
|
+
!__path_first_%out_bool
|
|
430
|
+
!__path_ptr_%out_bool
|
|
431
|
+
!__path_empty_%out_bool
|
|
432
|
+
!__path_len_%out_bool
|
|
433
|
+
jmp L_PATH_IS_ABSOLUTE_END
|
|
434
|
+
|
|
435
|
+
L_PATH_IS_ABSOLUTE_FALSE:
|
|
436
|
+
%out_bool = add 0, 0
|
|
437
|
+
!__path_empty_%out_bool
|
|
438
|
+
!__path_len_%out_bool
|
|
439
|
+
jmp L_PATH_IS_ABSOLUTE_END
|
|
440
|
+
|
|
441
|
+
L_PATH_IS_ABSOLUTE_END:
|
|
442
|
+
[END_MACRO]
|
|
443
|
+
|
|
444
|
+
[MACRO] PATH_HAS_ROOT %out_bool, %path_slice
|
|
445
|
+
EXPAND PATH_IS_ABSOLUTE %out_bool, %path_slice
|
|
446
|
+
[END_MACRO]
|
|
447
|
+
|
|
448
|
+
[MACRO] PATH_IS_RELATIVE %out_bool, %path_slice
|
|
449
|
+
EXPAND PATH_IS_ABSOLUTE __path_abs_%out_bool, %path_slice
|
|
450
|
+
%out_bool = eq __path_abs_%out_bool, 0
|
|
451
|
+
!__path_abs_%out_bool
|
|
452
|
+
[END_MACRO]
|
|
453
|
+
|
|
454
|
+
[MACRO] PATH_IS_EMPTY %out_bool, %path_slice
|
|
455
|
+
__path_len_%out_bool = load %path_slice+Slice_len as u64
|
|
456
|
+
%out_bool = eq __path_len_%out_bool, 0
|
|
457
|
+
!__path_len_%out_bool
|
|
458
|
+
[END_MACRO]
|
|
459
|
+
|
|
460
|
+
[MACRO] PATH_ENDS_WITH_SEPARATOR %out_bool, %path_slice
|
|
461
|
+
__path_len_%out_bool = load %path_slice+Slice_len as u64
|
|
462
|
+
__path_empty_%out_bool = eq __path_len_%out_bool, 0
|
|
463
|
+
br __path_empty_%out_bool -> L_PATH_ENDS_WITH_SEPARATOR_FALSE, L_PATH_ENDS_WITH_SEPARATOR_CHECK
|
|
464
|
+
|
|
465
|
+
L_PATH_ENDS_WITH_SEPARATOR_CHECK:
|
|
466
|
+
__path_ptr_%out_bool = load %path_slice+Slice_ptr as ptr
|
|
467
|
+
__path_last_idx_%out_bool = sub __path_len_%out_bool, 1
|
|
468
|
+
__path_last_ptr_%out_bool = ptr_add __path_ptr_%out_bool, __path_last_idx_%out_bool
|
|
469
|
+
__path_last_%out_bool = load __path_last_ptr_%out_bool+0 as u8
|
|
470
|
+
%out_bool = eq __path_last_%out_bool, 47
|
|
471
|
+
!__path_last_%out_bool
|
|
472
|
+
!__path_last_ptr_%out_bool
|
|
473
|
+
!__path_last_idx_%out_bool
|
|
474
|
+
!__path_ptr_%out_bool
|
|
475
|
+
!__path_empty_%out_bool
|
|
476
|
+
!__path_len_%out_bool
|
|
477
|
+
jmp L_PATH_ENDS_WITH_SEPARATOR_END
|
|
478
|
+
|
|
479
|
+
L_PATH_ENDS_WITH_SEPARATOR_FALSE:
|
|
480
|
+
%out_bool = add 0, 0
|
|
481
|
+
!__path_empty_%out_bool
|
|
482
|
+
!__path_len_%out_bool
|
|
483
|
+
jmp L_PATH_ENDS_WITH_SEPARATOR_END
|
|
484
|
+
|
|
485
|
+
L_PATH_ENDS_WITH_SEPARATOR_END:
|
|
486
|
+
[END_MACRO]
|
|
487
|
+
|
|
488
|
+
[MACRO] PATH_STARTS_WITH %out_bool, %path_slice, %prefix_slice
|
|
489
|
+
__path_prefix_len_%out_bool = load %prefix_slice+Slice_len as u64
|
|
490
|
+
__path_len_%out_bool = load %path_slice+Slice_len as u64
|
|
491
|
+
__path_idx_slot_%out_bool = stack_alloc 8
|
|
492
|
+
store __path_idx_slot_%out_bool+0, 0 as u64
|
|
493
|
+
__path_prefix_empty_%out_bool = eq __path_prefix_len_%out_bool, 0
|
|
494
|
+
br __path_prefix_empty_%out_bool -> L_PATH_STARTS_WITH_TRUE_EMPTY, L_PATH_STARTS_WITH_CHECK_PREFIX
|
|
495
|
+
|
|
496
|
+
L_PATH_STARTS_WITH_CHECK_PREFIX:
|
|
497
|
+
__path_prefix_fits_%out_bool = ule __path_prefix_len_%out_bool, __path_len_%out_bool
|
|
498
|
+
br __path_prefix_fits_%out_bool -> L_PATH_STARTS_WITH_COMPARE_INIT, L_PATH_STARTS_WITH_FALSE_SHORT
|
|
499
|
+
|
|
500
|
+
L_PATH_STARTS_WITH_COMPARE_INIT:
|
|
501
|
+
__path_ptr_%out_bool = load %path_slice+Slice_ptr as ptr
|
|
502
|
+
__path_prefix_ptr_%out_bool = load %prefix_slice+Slice_ptr as ptr
|
|
503
|
+
jmp L_PATH_STARTS_WITH_COMPARE_HEAD
|
|
504
|
+
|
|
505
|
+
L_PATH_STARTS_WITH_COMPARE_HEAD:
|
|
506
|
+
__path_idx_%out_bool = load __path_idx_slot_%out_bool+0 as u64
|
|
507
|
+
__path_compare_done_%out_bool = eq __path_idx_%out_bool, __path_prefix_len_%out_bool
|
|
508
|
+
br __path_compare_done_%out_bool -> L_PATH_STARTS_WITH_CHECK_BOUNDARY, L_PATH_STARTS_WITH_COMPARE_BODY
|
|
509
|
+
|
|
510
|
+
L_PATH_STARTS_WITH_COMPARE_BODY:
|
|
511
|
+
__path_byte_ptr_%out_bool = ptr_add __path_ptr_%out_bool, __path_idx_%out_bool
|
|
512
|
+
__path_prefix_byte_ptr_%out_bool = ptr_add __path_prefix_ptr_%out_bool, __path_idx_%out_bool
|
|
513
|
+
__path_byte_%out_bool = load __path_byte_ptr_%out_bool+0 as u8
|
|
514
|
+
__path_prefix_byte_%out_bool = load __path_prefix_byte_ptr_%out_bool+0 as u8
|
|
515
|
+
__path_bytes_eq_%out_bool = eq __path_byte_%out_bool, __path_prefix_byte_%out_bool
|
|
516
|
+
br __path_bytes_eq_%out_bool -> L_PATH_STARTS_WITH_COMPARE_NEXT, L_PATH_STARTS_WITH_FALSE_COMPARE
|
|
517
|
+
|
|
518
|
+
L_PATH_STARTS_WITH_COMPARE_NEXT:
|
|
519
|
+
__path_next_idx_%out_bool = add __path_idx_%out_bool, 1
|
|
520
|
+
store __path_idx_slot_%out_bool+0, __path_next_idx_%out_bool as u64
|
|
521
|
+
!__path_next_idx_%out_bool
|
|
522
|
+
!__path_bytes_eq_%out_bool
|
|
523
|
+
!__path_prefix_byte_%out_bool
|
|
524
|
+
!__path_byte_%out_bool
|
|
525
|
+
!__path_prefix_byte_ptr_%out_bool
|
|
526
|
+
!__path_byte_ptr_%out_bool
|
|
527
|
+
!__path_compare_done_%out_bool
|
|
528
|
+
!__path_idx_%out_bool
|
|
529
|
+
jmp L_PATH_STARTS_WITH_COMPARE_HEAD
|
|
530
|
+
|
|
531
|
+
L_PATH_STARTS_WITH_CHECK_BOUNDARY:
|
|
532
|
+
__path_same_len_%out_bool = eq __path_len_%out_bool, __path_prefix_len_%out_bool
|
|
533
|
+
br __path_same_len_%out_bool -> L_PATH_STARTS_WITH_TRUE_SAME, L_PATH_STARTS_WITH_CHECK_PREFIX_SEPARATOR
|
|
534
|
+
|
|
535
|
+
L_PATH_STARTS_WITH_CHECK_PREFIX_SEPARATOR:
|
|
536
|
+
__path_prefix_last_idx_%out_bool = sub __path_prefix_len_%out_bool, 1
|
|
537
|
+
__path_prefix_last_ptr_%out_bool = ptr_add __path_prefix_ptr_%out_bool, __path_prefix_last_idx_%out_bool
|
|
538
|
+
__path_prefix_last_%out_bool = load __path_prefix_last_ptr_%out_bool+0 as u8
|
|
539
|
+
__path_prefix_ends_sep_%out_bool = eq __path_prefix_last_%out_bool, 47
|
|
540
|
+
br __path_prefix_ends_sep_%out_bool -> L_PATH_STARTS_WITH_TRUE_PREFIX_SEP, L_PATH_STARTS_WITH_CHECK_PATH_SEPARATOR
|
|
541
|
+
|
|
542
|
+
L_PATH_STARTS_WITH_CHECK_PATH_SEPARATOR:
|
|
543
|
+
__path_boundary_ptr_%out_bool = ptr_add __path_ptr_%out_bool, __path_prefix_len_%out_bool
|
|
544
|
+
__path_boundary_%out_bool = load __path_boundary_ptr_%out_bool+0 as u8
|
|
545
|
+
%out_bool = eq __path_boundary_%out_bool, 47
|
|
546
|
+
!__path_boundary_%out_bool
|
|
547
|
+
!__path_boundary_ptr_%out_bool
|
|
548
|
+
!__path_ptr_%out_bool
|
|
549
|
+
!__path_prefix_ends_sep_%out_bool
|
|
550
|
+
!__path_prefix_last_%out_bool
|
|
551
|
+
!__path_prefix_last_ptr_%out_bool
|
|
552
|
+
!__path_prefix_last_idx_%out_bool
|
|
553
|
+
!__path_prefix_ptr_%out_bool
|
|
554
|
+
!__path_compare_done_%out_bool
|
|
555
|
+
!__path_idx_%out_bool
|
|
556
|
+
!__path_same_len_%out_bool
|
|
557
|
+
!__path_prefix_fits_%out_bool
|
|
558
|
+
!__path_prefix_empty_%out_bool
|
|
559
|
+
!__path_len_%out_bool
|
|
560
|
+
!__path_prefix_len_%out_bool
|
|
561
|
+
jmp L_PATH_STARTS_WITH_END
|
|
562
|
+
|
|
563
|
+
L_PATH_STARTS_WITH_TRUE_PREFIX_SEP:
|
|
564
|
+
%out_bool = add 0, 1
|
|
565
|
+
!__path_prefix_ends_sep_%out_bool
|
|
566
|
+
!__path_prefix_last_%out_bool
|
|
567
|
+
!__path_prefix_last_ptr_%out_bool
|
|
568
|
+
!__path_prefix_last_idx_%out_bool
|
|
569
|
+
!__path_prefix_ptr_%out_bool
|
|
570
|
+
!__path_ptr_%out_bool
|
|
571
|
+
!__path_compare_done_%out_bool
|
|
572
|
+
!__path_idx_%out_bool
|
|
573
|
+
!__path_same_len_%out_bool
|
|
574
|
+
!__path_prefix_fits_%out_bool
|
|
575
|
+
!__path_prefix_empty_%out_bool
|
|
576
|
+
!__path_len_%out_bool
|
|
577
|
+
!__path_prefix_len_%out_bool
|
|
578
|
+
jmp L_PATH_STARTS_WITH_END
|
|
579
|
+
|
|
580
|
+
L_PATH_STARTS_WITH_TRUE_SAME:
|
|
581
|
+
%out_bool = add 0, 1
|
|
582
|
+
!__path_same_len_%out_bool
|
|
583
|
+
!__path_prefix_ptr_%out_bool
|
|
584
|
+
!__path_ptr_%out_bool
|
|
585
|
+
!__path_compare_done_%out_bool
|
|
586
|
+
!__path_idx_%out_bool
|
|
587
|
+
!__path_prefix_fits_%out_bool
|
|
588
|
+
!__path_prefix_empty_%out_bool
|
|
589
|
+
!__path_len_%out_bool
|
|
590
|
+
!__path_prefix_len_%out_bool
|
|
591
|
+
jmp L_PATH_STARTS_WITH_END
|
|
592
|
+
|
|
593
|
+
L_PATH_STARTS_WITH_FALSE_COMPARE:
|
|
594
|
+
%out_bool = add 0, 0
|
|
595
|
+
!__path_bytes_eq_%out_bool
|
|
596
|
+
!__path_prefix_byte_%out_bool
|
|
597
|
+
!__path_byte_%out_bool
|
|
598
|
+
!__path_prefix_byte_ptr_%out_bool
|
|
599
|
+
!__path_byte_ptr_%out_bool
|
|
600
|
+
!__path_compare_done_%out_bool
|
|
601
|
+
!__path_idx_%out_bool
|
|
602
|
+
!__path_prefix_ptr_%out_bool
|
|
603
|
+
!__path_ptr_%out_bool
|
|
604
|
+
!__path_prefix_fits_%out_bool
|
|
605
|
+
!__path_prefix_empty_%out_bool
|
|
606
|
+
!__path_len_%out_bool
|
|
607
|
+
!__path_prefix_len_%out_bool
|
|
608
|
+
jmp L_PATH_STARTS_WITH_END
|
|
609
|
+
|
|
610
|
+
L_PATH_STARTS_WITH_FALSE_SHORT:
|
|
611
|
+
%out_bool = add 0, 0
|
|
612
|
+
!__path_prefix_fits_%out_bool
|
|
613
|
+
!__path_prefix_empty_%out_bool
|
|
614
|
+
!__path_len_%out_bool
|
|
615
|
+
!__path_prefix_len_%out_bool
|
|
616
|
+
jmp L_PATH_STARTS_WITH_END
|
|
617
|
+
|
|
618
|
+
L_PATH_STARTS_WITH_TRUE_EMPTY:
|
|
619
|
+
%out_bool = add 0, 1
|
|
620
|
+
!__path_prefix_empty_%out_bool
|
|
621
|
+
!__path_len_%out_bool
|
|
622
|
+
!__path_prefix_len_%out_bool
|
|
623
|
+
jmp L_PATH_STARTS_WITH_END
|
|
624
|
+
|
|
625
|
+
L_PATH_STARTS_WITH_END:
|
|
626
|
+
[END_MACRO]
|
|
627
|
+
|
|
628
|
+
[MACRO] PATH_TRY_STRIP_PREFIX %out_ok, %out_slice, %path_slice, %prefix_slice
|
|
629
|
+
EXPAND PATH_STARTS_WITH __path_strip_match_%out_ok, %path_slice, %prefix_slice
|
|
630
|
+
br __path_strip_match_%out_ok -> L_PATH_STRIP_HIT, L_PATH_STRIP_MISS
|
|
631
|
+
|
|
632
|
+
L_PATH_STRIP_HIT:
|
|
633
|
+
__path_prefix_len_%out_ok = load %prefix_slice+Slice_len as u64
|
|
634
|
+
__path_len_%out_ok = load %path_slice+Slice_len as u64
|
|
635
|
+
__path_exact_%out_ok = eq __path_prefix_len_%out_ok, __path_len_%out_ok
|
|
636
|
+
br __path_exact_%out_ok -> L_PATH_STRIP_EXACT, L_PATH_STRIP_CHECK_EMPTY
|
|
637
|
+
|
|
638
|
+
L_PATH_STRIP_CHECK_EMPTY:
|
|
639
|
+
__path_prefix_empty_%out_ok = eq __path_prefix_len_%out_ok, 0
|
|
640
|
+
br __path_prefix_empty_%out_ok -> L_PATH_STRIP_FROM_ZERO, L_PATH_STRIP_CHECK_PREFIX_SEPARATOR
|
|
641
|
+
|
|
642
|
+
L_PATH_STRIP_CHECK_PREFIX_SEPARATOR:
|
|
643
|
+
__path_prefix_ptr_%out_ok = load %prefix_slice+Slice_ptr as ptr
|
|
644
|
+
__path_prefix_last_idx_%out_ok = sub __path_prefix_len_%out_ok, 1
|
|
645
|
+
__path_prefix_last_ptr_%out_ok = ptr_add __path_prefix_ptr_%out_ok, __path_prefix_last_idx_%out_ok
|
|
646
|
+
__path_prefix_last_%out_ok = load __path_prefix_last_ptr_%out_ok+0 as u8
|
|
647
|
+
__path_prefix_ends_sep_%out_ok = eq __path_prefix_last_%out_ok, 47
|
|
648
|
+
br __path_prefix_ends_sep_%out_ok -> L_PATH_STRIP_FROM_PREFIX, L_PATH_STRIP_AFTER_SEPARATOR
|
|
649
|
+
|
|
650
|
+
L_PATH_STRIP_AFTER_SEPARATOR:
|
|
651
|
+
__path_start_%out_ok = add __path_prefix_len_%out_ok, 1
|
|
652
|
+
__path_rest_len_%out_ok = sub __path_len_%out_ok, __path_start_%out_ok
|
|
653
|
+
EXPAND STR_SLICE %out_slice, %path_slice, __path_start_%out_ok, __path_rest_len_%out_ok
|
|
654
|
+
%out_ok = add 0, 1
|
|
655
|
+
!__path_rest_len_%out_ok
|
|
656
|
+
!__path_start_%out_ok
|
|
657
|
+
!__path_prefix_ends_sep_%out_ok
|
|
658
|
+
!__path_prefix_last_%out_ok
|
|
659
|
+
!__path_prefix_last_ptr_%out_ok
|
|
660
|
+
!__path_prefix_last_idx_%out_ok
|
|
661
|
+
!__path_prefix_ptr_%out_ok
|
|
662
|
+
!__path_prefix_empty_%out_ok
|
|
663
|
+
!__path_exact_%out_ok
|
|
664
|
+
!__path_len_%out_ok
|
|
665
|
+
!__path_prefix_len_%out_ok
|
|
666
|
+
!__path_strip_match_%out_ok
|
|
667
|
+
jmp L_PATH_STRIP_END
|
|
668
|
+
|
|
669
|
+
L_PATH_STRIP_FROM_PREFIX:
|
|
670
|
+
__path_start_%out_ok = add __path_prefix_len_%out_ok, 0
|
|
671
|
+
__path_rest_len_%out_ok = sub __path_len_%out_ok, __path_start_%out_ok
|
|
672
|
+
EXPAND STR_SLICE %out_slice, %path_slice, __path_start_%out_ok, __path_rest_len_%out_ok
|
|
673
|
+
%out_ok = add 0, 1
|
|
674
|
+
!__path_rest_len_%out_ok
|
|
675
|
+
!__path_start_%out_ok
|
|
676
|
+
!__path_prefix_ends_sep_%out_ok
|
|
677
|
+
!__path_prefix_last_%out_ok
|
|
678
|
+
!__path_prefix_last_ptr_%out_ok
|
|
679
|
+
!__path_prefix_last_idx_%out_ok
|
|
680
|
+
!__path_prefix_ptr_%out_ok
|
|
681
|
+
!__path_prefix_empty_%out_ok
|
|
682
|
+
!__path_exact_%out_ok
|
|
683
|
+
!__path_len_%out_ok
|
|
684
|
+
!__path_prefix_len_%out_ok
|
|
685
|
+
!__path_strip_match_%out_ok
|
|
686
|
+
jmp L_PATH_STRIP_END
|
|
687
|
+
|
|
688
|
+
L_PATH_STRIP_FROM_ZERO:
|
|
689
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_len_%out_ok
|
|
690
|
+
%out_ok = add 0, 1
|
|
691
|
+
!__path_prefix_empty_%out_ok
|
|
692
|
+
!__path_exact_%out_ok
|
|
693
|
+
!__path_len_%out_ok
|
|
694
|
+
!__path_prefix_len_%out_ok
|
|
695
|
+
!__path_strip_match_%out_ok
|
|
696
|
+
jmp L_PATH_STRIP_END
|
|
697
|
+
|
|
698
|
+
L_PATH_STRIP_EXACT:
|
|
699
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
700
|
+
%out_ok = add 0, 1
|
|
701
|
+
!__path_exact_%out_ok
|
|
702
|
+
!__path_len_%out_ok
|
|
703
|
+
!__path_prefix_len_%out_ok
|
|
704
|
+
!__path_strip_match_%out_ok
|
|
705
|
+
jmp L_PATH_STRIP_END
|
|
706
|
+
|
|
707
|
+
L_PATH_STRIP_MISS:
|
|
708
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
709
|
+
%out_ok = add 0, 0
|
|
710
|
+
!__path_strip_match_%out_ok
|
|
711
|
+
jmp L_PATH_STRIP_END
|
|
712
|
+
|
|
713
|
+
L_PATH_STRIP_END:
|
|
714
|
+
[END_MACRO]
|
|
715
|
+
|
|
716
|
+
// Rust method-name alias over PATH_TRY_STRIP_PREFIX.
|
|
717
|
+
[MACRO] PATH_STRIP_PREFIX %out_ok, %out_slice, %path_slice, %prefix_slice
|
|
718
|
+
EXPAND PATH_TRY_STRIP_PREFIX %out_ok, %out_slice, %path_slice, %prefix_slice
|
|
719
|
+
[END_MACRO]
|
|
720
|
+
|
|
721
|
+
[MACRO] PATH_TRIM_PREFIX %out_slice, %path_slice, %prefix_slice
|
|
722
|
+
EXPAND PATH_TRY_STRIP_PREFIX __path_trim_ok_%out_slice, __path_trim_value_%out_slice, %path_slice, %prefix_slice
|
|
723
|
+
br __path_trim_ok_%out_slice -> L_PATH_TRIM_PREFIX_HIT_%out_slice, L_PATH_TRIM_PREFIX_MISS_%out_slice
|
|
724
|
+
|
|
725
|
+
L_PATH_TRIM_PREFIX_HIT_%out_slice:
|
|
726
|
+
__path_trim_value_len_%out_slice = load __path_trim_value_%out_slice+Slice_len as u64
|
|
727
|
+
EXPAND STR_SLICE %out_slice, __path_trim_value_%out_slice, 0, __path_trim_value_len_%out_slice
|
|
728
|
+
!__path_trim_value_len_%out_slice
|
|
729
|
+
!__path_trim_value_%out_slice
|
|
730
|
+
!__path_trim_ok_%out_slice
|
|
731
|
+
jmp L_PATH_TRIM_PREFIX_END_%out_slice
|
|
732
|
+
|
|
733
|
+
L_PATH_TRIM_PREFIX_MISS_%out_slice:
|
|
734
|
+
__path_trim_len_%out_slice = load %path_slice+Slice_len as u64
|
|
735
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_trim_len_%out_slice
|
|
736
|
+
!__path_trim_len_%out_slice
|
|
737
|
+
!__path_trim_value_%out_slice
|
|
738
|
+
!__path_trim_ok_%out_slice
|
|
739
|
+
|
|
740
|
+
L_PATH_TRIM_PREFIX_END_%out_slice:
|
|
741
|
+
[END_MACRO]
|
|
742
|
+
|
|
743
|
+
[MACRO] PATH_ENDS_WITH %out_bool, %path_slice, %child_slice
|
|
744
|
+
__path_end_path_len_%out_bool = load %path_slice+Slice_len as u64
|
|
745
|
+
__path_end_child_len_%out_bool = load %child_slice+Slice_len as u64
|
|
746
|
+
__path_end_idx_slot_%out_bool = stack_alloc 8
|
|
747
|
+
__path_end_child_empty_%out_bool = eq __path_end_child_len_%out_bool, 0
|
|
748
|
+
br __path_end_child_empty_%out_bool -> L_PATH_ENDS_WITH_TRUE_EMPTY_%out_bool, L_PATH_ENDS_WITH_CHECK_ABS_%out_bool
|
|
749
|
+
|
|
750
|
+
L_PATH_ENDS_WITH_CHECK_ABS_%out_bool:
|
|
751
|
+
EXPAND PATH_IS_ABSOLUTE __path_end_child_abs_%out_bool, %child_slice
|
|
752
|
+
br __path_end_child_abs_%out_bool -> L_PATH_ENDS_WITH_ABS_CHILD_%out_bool, L_PATH_ENDS_WITH_REL_CHILD_%out_bool
|
|
753
|
+
|
|
754
|
+
L_PATH_ENDS_WITH_ABS_CHILD_%out_bool:
|
|
755
|
+
__path_end_abs_same_len_%out_bool = eq __path_end_path_len_%out_bool, __path_end_child_len_%out_bool
|
|
756
|
+
br __path_end_abs_same_len_%out_bool -> L_PATH_ENDS_WITH_COMPARE_ZERO_%out_bool, L_PATH_ENDS_WITH_FALSE_ABS_%out_bool
|
|
757
|
+
|
|
758
|
+
L_PATH_ENDS_WITH_REL_CHILD_%out_bool:
|
|
759
|
+
__path_end_child_fits_%out_bool = ule __path_end_child_len_%out_bool, __path_end_path_len_%out_bool
|
|
760
|
+
br __path_end_child_fits_%out_bool -> L_PATH_ENDS_WITH_REL_START_%out_bool, L_PATH_ENDS_WITH_FALSE_SHORT_%out_bool
|
|
761
|
+
|
|
762
|
+
L_PATH_ENDS_WITH_REL_START_%out_bool:
|
|
763
|
+
__path_end_start_%out_bool = sub __path_end_path_len_%out_bool, __path_end_child_len_%out_bool
|
|
764
|
+
__path_end_at_start_%out_bool = eq __path_end_start_%out_bool, 0
|
|
765
|
+
br __path_end_at_start_%out_bool -> L_PATH_ENDS_WITH_COMPARE_INIT_AFTER_REL_START_%out_bool, L_PATH_ENDS_WITH_CHECK_BOUNDARY_%out_bool
|
|
766
|
+
|
|
767
|
+
L_PATH_ENDS_WITH_COMPARE_INIT_AFTER_REL_START_%out_bool:
|
|
768
|
+
!__path_end_at_start_%out_bool
|
|
769
|
+
!__path_end_child_fits_%out_bool
|
|
770
|
+
jmp L_PATH_ENDS_WITH_COMPARE_INIT_%out_bool
|
|
771
|
+
|
|
772
|
+
L_PATH_ENDS_WITH_CHECK_BOUNDARY_%out_bool:
|
|
773
|
+
__path_end_path_ptr_%out_bool = load %path_slice+Slice_ptr as ptr
|
|
774
|
+
__path_end_prev_idx_%out_bool = sub __path_end_start_%out_bool, 1
|
|
775
|
+
__path_end_prev_ptr_%out_bool = ptr_add __path_end_path_ptr_%out_bool, __path_end_prev_idx_%out_bool
|
|
776
|
+
__path_end_prev_%out_bool = load __path_end_prev_ptr_%out_bool+0 as u8
|
|
777
|
+
__path_end_boundary_%out_bool = eq __path_end_prev_%out_bool, 47
|
|
778
|
+
br __path_end_boundary_%out_bool -> L_PATH_ENDS_WITH_COMPARE_INIT_AFTER_BOUNDARY_%out_bool, L_PATH_ENDS_WITH_FALSE_BOUNDARY_%out_bool
|
|
779
|
+
|
|
780
|
+
L_PATH_ENDS_WITH_COMPARE_INIT_AFTER_BOUNDARY_%out_bool:
|
|
781
|
+
!__path_end_boundary_%out_bool
|
|
782
|
+
!__path_end_prev_%out_bool
|
|
783
|
+
!__path_end_prev_ptr_%out_bool
|
|
784
|
+
!__path_end_prev_idx_%out_bool
|
|
785
|
+
!__path_end_path_ptr_%out_bool
|
|
786
|
+
!__path_end_at_start_%out_bool
|
|
787
|
+
!__path_end_child_fits_%out_bool
|
|
788
|
+
jmp L_PATH_ENDS_WITH_COMPARE_INIT_%out_bool
|
|
789
|
+
|
|
790
|
+
L_PATH_ENDS_WITH_COMPARE_ZERO_%out_bool:
|
|
791
|
+
__path_end_start_%out_bool = add 0, 0
|
|
792
|
+
!__path_end_abs_same_len_%out_bool
|
|
793
|
+
jmp L_PATH_ENDS_WITH_COMPARE_INIT_%out_bool
|
|
794
|
+
|
|
795
|
+
L_PATH_ENDS_WITH_COMPARE_INIT_%out_bool:
|
|
796
|
+
store __path_end_idx_slot_%out_bool+0, 0 as u64
|
|
797
|
+
__path_end_path_ptr_%out_bool = load %path_slice+Slice_ptr as ptr
|
|
798
|
+
__path_end_child_ptr_%out_bool = load %child_slice+Slice_ptr as ptr
|
|
799
|
+
jmp L_PATH_ENDS_WITH_COMPARE_HEAD_%out_bool
|
|
800
|
+
|
|
801
|
+
L_PATH_ENDS_WITH_COMPARE_HEAD_%out_bool:
|
|
802
|
+
__path_end_idx_%out_bool = load __path_end_idx_slot_%out_bool+0 as u64
|
|
803
|
+
__path_end_done_%out_bool = eq __path_end_idx_%out_bool, __path_end_child_len_%out_bool
|
|
804
|
+
br __path_end_done_%out_bool -> L_PATH_ENDS_WITH_TRUE_DONE_%out_bool, L_PATH_ENDS_WITH_COMPARE_BODY_%out_bool
|
|
805
|
+
|
|
806
|
+
L_PATH_ENDS_WITH_COMPARE_BODY_%out_bool:
|
|
807
|
+
__path_end_path_idx_%out_bool = add __path_end_start_%out_bool, __path_end_idx_%out_bool
|
|
808
|
+
__path_end_path_byte_ptr_%out_bool = ptr_add __path_end_path_ptr_%out_bool, __path_end_path_idx_%out_bool
|
|
809
|
+
__path_end_child_byte_ptr_%out_bool = ptr_add __path_end_child_ptr_%out_bool, __path_end_idx_%out_bool
|
|
810
|
+
__path_end_path_byte_%out_bool = load __path_end_path_byte_ptr_%out_bool+0 as u8
|
|
811
|
+
__path_end_child_byte_%out_bool = load __path_end_child_byte_ptr_%out_bool+0 as u8
|
|
812
|
+
__path_end_bytes_eq_%out_bool = eq __path_end_path_byte_%out_bool, __path_end_child_byte_%out_bool
|
|
813
|
+
br __path_end_bytes_eq_%out_bool -> L_PATH_ENDS_WITH_COMPARE_NEXT_%out_bool, L_PATH_ENDS_WITH_FALSE_COMPARE_%out_bool
|
|
814
|
+
|
|
815
|
+
L_PATH_ENDS_WITH_COMPARE_NEXT_%out_bool:
|
|
816
|
+
__path_end_next_idx_%out_bool = add __path_end_idx_%out_bool, 1
|
|
817
|
+
store __path_end_idx_slot_%out_bool+0, __path_end_next_idx_%out_bool as u64
|
|
818
|
+
!__path_end_next_idx_%out_bool
|
|
819
|
+
!__path_end_bytes_eq_%out_bool
|
|
820
|
+
!__path_end_child_byte_%out_bool
|
|
821
|
+
!__path_end_path_byte_%out_bool
|
|
822
|
+
!__path_end_child_byte_ptr_%out_bool
|
|
823
|
+
!__path_end_path_byte_ptr_%out_bool
|
|
824
|
+
!__path_end_path_idx_%out_bool
|
|
825
|
+
!__path_end_done_%out_bool
|
|
826
|
+
!__path_end_idx_%out_bool
|
|
827
|
+
jmp L_PATH_ENDS_WITH_COMPARE_HEAD_%out_bool
|
|
828
|
+
|
|
829
|
+
L_PATH_ENDS_WITH_TRUE_DONE_%out_bool:
|
|
830
|
+
%out_bool = add 0, 1
|
|
831
|
+
!__path_end_done_%out_bool
|
|
832
|
+
!__path_end_idx_%out_bool
|
|
833
|
+
!__path_end_child_ptr_%out_bool
|
|
834
|
+
!__path_end_path_ptr_%out_bool
|
|
835
|
+
!__path_end_start_%out_bool
|
|
836
|
+
!__path_end_child_abs_%out_bool
|
|
837
|
+
!__path_end_child_empty_%out_bool
|
|
838
|
+
!__path_end_child_len_%out_bool
|
|
839
|
+
!__path_end_path_len_%out_bool
|
|
840
|
+
jmp L_PATH_ENDS_WITH_END_%out_bool
|
|
841
|
+
|
|
842
|
+
L_PATH_ENDS_WITH_FALSE_COMPARE_%out_bool:
|
|
843
|
+
%out_bool = add 0, 0
|
|
844
|
+
!__path_end_bytes_eq_%out_bool
|
|
845
|
+
!__path_end_child_byte_%out_bool
|
|
846
|
+
!__path_end_path_byte_%out_bool
|
|
847
|
+
!__path_end_child_byte_ptr_%out_bool
|
|
848
|
+
!__path_end_path_byte_ptr_%out_bool
|
|
849
|
+
!__path_end_path_idx_%out_bool
|
|
850
|
+
!__path_end_done_%out_bool
|
|
851
|
+
!__path_end_idx_%out_bool
|
|
852
|
+
!__path_end_child_ptr_%out_bool
|
|
853
|
+
!__path_end_path_ptr_%out_bool
|
|
854
|
+
!__path_end_start_%out_bool
|
|
855
|
+
!__path_end_child_abs_%out_bool
|
|
856
|
+
!__path_end_child_empty_%out_bool
|
|
857
|
+
!__path_end_child_len_%out_bool
|
|
858
|
+
!__path_end_path_len_%out_bool
|
|
859
|
+
jmp L_PATH_ENDS_WITH_END_%out_bool
|
|
860
|
+
|
|
861
|
+
L_PATH_ENDS_WITH_FALSE_BOUNDARY_%out_bool:
|
|
862
|
+
%out_bool = add 0, 0
|
|
863
|
+
!__path_end_boundary_%out_bool
|
|
864
|
+
!__path_end_prev_%out_bool
|
|
865
|
+
!__path_end_prev_ptr_%out_bool
|
|
866
|
+
!__path_end_prev_idx_%out_bool
|
|
867
|
+
!__path_end_path_ptr_%out_bool
|
|
868
|
+
!__path_end_at_start_%out_bool
|
|
869
|
+
!__path_end_start_%out_bool
|
|
870
|
+
!__path_end_child_fits_%out_bool
|
|
871
|
+
!__path_end_child_abs_%out_bool
|
|
872
|
+
!__path_end_child_empty_%out_bool
|
|
873
|
+
!__path_end_child_len_%out_bool
|
|
874
|
+
!__path_end_path_len_%out_bool
|
|
875
|
+
jmp L_PATH_ENDS_WITH_END_%out_bool
|
|
876
|
+
|
|
877
|
+
L_PATH_ENDS_WITH_FALSE_ABS_%out_bool:
|
|
878
|
+
%out_bool = add 0, 0
|
|
879
|
+
!__path_end_abs_same_len_%out_bool
|
|
880
|
+
!__path_end_child_abs_%out_bool
|
|
881
|
+
!__path_end_child_empty_%out_bool
|
|
882
|
+
!__path_end_child_len_%out_bool
|
|
883
|
+
!__path_end_path_len_%out_bool
|
|
884
|
+
jmp L_PATH_ENDS_WITH_END_%out_bool
|
|
885
|
+
|
|
886
|
+
L_PATH_ENDS_WITH_FALSE_SHORT_%out_bool:
|
|
887
|
+
%out_bool = add 0, 0
|
|
888
|
+
!__path_end_child_fits_%out_bool
|
|
889
|
+
!__path_end_child_abs_%out_bool
|
|
890
|
+
!__path_end_child_empty_%out_bool
|
|
891
|
+
!__path_end_child_len_%out_bool
|
|
892
|
+
!__path_end_path_len_%out_bool
|
|
893
|
+
jmp L_PATH_ENDS_WITH_END_%out_bool
|
|
894
|
+
|
|
895
|
+
L_PATH_ENDS_WITH_TRUE_EMPTY_%out_bool:
|
|
896
|
+
%out_bool = add 0, 1
|
|
897
|
+
!__path_end_child_empty_%out_bool
|
|
898
|
+
!__path_end_child_len_%out_bool
|
|
899
|
+
!__path_end_path_len_%out_bool
|
|
900
|
+
jmp L_PATH_ENDS_WITH_END_%out_bool
|
|
901
|
+
|
|
902
|
+
L_PATH_ENDS_WITH_END_%out_bool:
|
|
903
|
+
[END_MACRO]
|
|
904
|
+
|
|
905
|
+
[MACRO] PATH_JOIN %out_slice, %base_slice, %child_slice
|
|
906
|
+
EXPAND PATH_IS_ABSOLUTE __path_join_child_abs_%out_slice, %child_slice
|
|
907
|
+
br __path_join_child_abs_%out_slice -> L_PATH_JOIN_CHILD_VIEW, L_PATH_JOIN_CHECK_BASE
|
|
908
|
+
|
|
909
|
+
L_PATH_JOIN_CHECK_BASE:
|
|
910
|
+
__path_join_base_len_%out_slice = load %base_slice+Slice_len as u64
|
|
911
|
+
__path_join_base_empty_%out_slice = eq __path_join_base_len_%out_slice, 0
|
|
912
|
+
br __path_join_base_empty_%out_slice -> L_PATH_JOIN_CHILD_VIEW_FROM_EMPTY_BASE, L_PATH_JOIN_CHECK_CHILD
|
|
913
|
+
|
|
914
|
+
L_PATH_JOIN_CHECK_CHILD:
|
|
915
|
+
__path_join_child_len_%out_slice = load %child_slice+Slice_len as u64
|
|
916
|
+
__path_join_child_empty_%out_slice = eq __path_join_child_len_%out_slice, 0
|
|
917
|
+
br __path_join_child_empty_%out_slice -> L_PATH_JOIN_BASE_VIEW, L_PATH_JOIN_CHECK_SEPARATOR
|
|
918
|
+
|
|
919
|
+
L_PATH_JOIN_CHECK_SEPARATOR:
|
|
920
|
+
EXPAND PATH_ENDS_WITH_SEPARATOR __path_join_base_has_sep_%out_slice, %base_slice
|
|
921
|
+
br __path_join_base_has_sep_%out_slice -> L_PATH_JOIN_CONCAT_DIRECT, L_PATH_JOIN_CONCAT_WITH_SEPARATOR
|
|
922
|
+
|
|
923
|
+
L_PATH_JOIN_CONCAT_DIRECT:
|
|
924
|
+
EXPAND STR_CONCAT %out_slice, %base_slice, %child_slice
|
|
925
|
+
!__path_join_base_has_sep_%out_slice
|
|
926
|
+
!__path_join_child_empty_%out_slice
|
|
927
|
+
!__path_join_child_len_%out_slice
|
|
928
|
+
!__path_join_base_empty_%out_slice
|
|
929
|
+
!__path_join_base_len_%out_slice
|
|
930
|
+
!__path_join_child_abs_%out_slice
|
|
931
|
+
jmp L_PATH_JOIN_END
|
|
932
|
+
|
|
933
|
+
L_PATH_JOIN_CONCAT_WITH_SEPARATOR:
|
|
934
|
+
EXPAND STR_FROM_PARTS __path_join_sep_%out_slice, &PATH_SEPARATOR, 1
|
|
935
|
+
EXPAND STR_CONCAT __path_join_base_sep_%out_slice, %base_slice, __path_join_sep_%out_slice
|
|
936
|
+
EXPAND STR_CONCAT %out_slice, __path_join_base_sep_%out_slice, %child_slice
|
|
937
|
+
!__path_join_base_sep_%out_slice
|
|
938
|
+
!__path_join_sep_%out_slice
|
|
939
|
+
!__path_join_base_has_sep_%out_slice
|
|
940
|
+
!__path_join_child_empty_%out_slice
|
|
941
|
+
!__path_join_child_len_%out_slice
|
|
942
|
+
!__path_join_base_empty_%out_slice
|
|
943
|
+
!__path_join_base_len_%out_slice
|
|
944
|
+
!__path_join_child_abs_%out_slice
|
|
945
|
+
jmp L_PATH_JOIN_END
|
|
946
|
+
|
|
947
|
+
L_PATH_JOIN_BASE_VIEW:
|
|
948
|
+
EXPAND STR_SLICE %out_slice, %base_slice, 0, __path_join_base_len_%out_slice
|
|
949
|
+
!__path_join_child_empty_%out_slice
|
|
950
|
+
!__path_join_child_len_%out_slice
|
|
951
|
+
!__path_join_base_empty_%out_slice
|
|
952
|
+
!__path_join_base_len_%out_slice
|
|
953
|
+
!__path_join_child_abs_%out_slice
|
|
954
|
+
jmp L_PATH_JOIN_END
|
|
955
|
+
|
|
956
|
+
L_PATH_JOIN_CHILD_VIEW_FROM_EMPTY_BASE:
|
|
957
|
+
__path_join_child_len_%out_slice = load %child_slice+Slice_len as u64
|
|
958
|
+
EXPAND STR_SLICE %out_slice, %child_slice, 0, __path_join_child_len_%out_slice
|
|
959
|
+
!__path_join_child_len_%out_slice
|
|
960
|
+
!__path_join_base_empty_%out_slice
|
|
961
|
+
!__path_join_base_len_%out_slice
|
|
962
|
+
!__path_join_child_abs_%out_slice
|
|
963
|
+
jmp L_PATH_JOIN_END
|
|
964
|
+
|
|
965
|
+
L_PATH_JOIN_CHILD_VIEW:
|
|
966
|
+
__path_join_child_len_%out_slice = load %child_slice+Slice_len as u64
|
|
967
|
+
EXPAND STR_SLICE %out_slice, %child_slice, 0, __path_join_child_len_%out_slice
|
|
968
|
+
!__path_join_child_len_%out_slice
|
|
969
|
+
!__path_join_child_abs_%out_slice
|
|
970
|
+
jmp L_PATH_JOIN_END
|
|
971
|
+
|
|
972
|
+
L_PATH_JOIN_END:
|
|
973
|
+
[END_MACRO]
|
|
974
|
+
|
|
975
|
+
[MACRO] PATH_PARENT %out_slice, %path_slice
|
|
976
|
+
EXPAND PATH_DIRNAME %out_slice, %path_slice
|
|
977
|
+
[END_MACRO]
|
|
978
|
+
|
|
979
|
+
[MACRO] PATH_FILE_STEM %out_slice, %path_slice
|
|
980
|
+
EXPAND PATH_STEM %out_slice, %path_slice
|
|
981
|
+
[END_MACRO]
|
|
982
|
+
|
|
983
|
+
[MACRO] PATH_FILE_PREFIX %out_slice, %path_slice
|
|
984
|
+
EXPAND PATH_BASENAME __path_prefix_base_%out_slice, %path_slice
|
|
985
|
+
__path_prefix_base_ptr_%out_slice = load __path_prefix_base_%out_slice+Slice_ptr as ptr
|
|
986
|
+
__path_prefix_base_len_%out_slice = load __path_prefix_base_%out_slice+Slice_len as u64
|
|
987
|
+
__path_prefix_scan_slot_%out_slice = stack_alloc 8
|
|
988
|
+
__path_prefix_empty_%out_slice = eq __path_prefix_base_len_%out_slice, 0
|
|
989
|
+
br __path_prefix_empty_%out_slice -> L_PATH_FILE_PREFIX_EMPTY_%out_slice, L_PATH_FILE_PREFIX_INIT_%out_slice
|
|
990
|
+
|
|
991
|
+
L_PATH_FILE_PREFIX_INIT_%out_slice:
|
|
992
|
+
__path_prefix_first_%out_slice = load __path_prefix_base_ptr_%out_slice+0 as u8
|
|
993
|
+
__path_prefix_starts_dot_%out_slice = eq __path_prefix_first_%out_slice, 46
|
|
994
|
+
br __path_prefix_starts_dot_%out_slice -> L_PATH_FILE_PREFIX_INIT_HIDDEN_%out_slice, L_PATH_FILE_PREFIX_INIT_NORMAL_%out_slice
|
|
995
|
+
|
|
996
|
+
L_PATH_FILE_PREFIX_INIT_HIDDEN_%out_slice:
|
|
997
|
+
store __path_prefix_scan_slot_%out_slice+0, 1 as u64
|
|
998
|
+
!__path_prefix_starts_dot_%out_slice
|
|
999
|
+
!__path_prefix_first_%out_slice
|
|
1000
|
+
jmp L_PATH_FILE_PREFIX_SCAN_%out_slice
|
|
1001
|
+
|
|
1002
|
+
L_PATH_FILE_PREFIX_INIT_NORMAL_%out_slice:
|
|
1003
|
+
store __path_prefix_scan_slot_%out_slice+0, 0 as u64
|
|
1004
|
+
!__path_prefix_starts_dot_%out_slice
|
|
1005
|
+
!__path_prefix_first_%out_slice
|
|
1006
|
+
jmp L_PATH_FILE_PREFIX_SCAN_%out_slice
|
|
1007
|
+
|
|
1008
|
+
L_PATH_FILE_PREFIX_SCAN_%out_slice:
|
|
1009
|
+
__path_prefix_idx_%out_slice = load __path_prefix_scan_slot_%out_slice+0 as u64
|
|
1010
|
+
__path_prefix_done_%out_slice = eq __path_prefix_idx_%out_slice, __path_prefix_base_len_%out_slice
|
|
1011
|
+
br __path_prefix_done_%out_slice -> L_PATH_FILE_PREFIX_NO_DOT_%out_slice, L_PATH_FILE_PREFIX_CHECK_%out_slice
|
|
1012
|
+
|
|
1013
|
+
L_PATH_FILE_PREFIX_CHECK_%out_slice:
|
|
1014
|
+
__path_prefix_ch_ptr_%out_slice = ptr_add __path_prefix_base_ptr_%out_slice, __path_prefix_idx_%out_slice
|
|
1015
|
+
__path_prefix_ch_%out_slice = load __path_prefix_ch_ptr_%out_slice+0 as u8
|
|
1016
|
+
__path_prefix_is_dot_%out_slice = eq __path_prefix_ch_%out_slice, 46
|
|
1017
|
+
br __path_prefix_is_dot_%out_slice -> L_PATH_FILE_PREFIX_FOUND_%out_slice, L_PATH_FILE_PREFIX_NEXT_%out_slice
|
|
1018
|
+
|
|
1019
|
+
L_PATH_FILE_PREFIX_NEXT_%out_slice:
|
|
1020
|
+
__path_prefix_next_%out_slice = add __path_prefix_idx_%out_slice, 1
|
|
1021
|
+
store __path_prefix_scan_slot_%out_slice+0, __path_prefix_next_%out_slice as u64
|
|
1022
|
+
!__path_prefix_next_%out_slice
|
|
1023
|
+
!__path_prefix_is_dot_%out_slice
|
|
1024
|
+
!__path_prefix_ch_%out_slice
|
|
1025
|
+
!__path_prefix_ch_ptr_%out_slice
|
|
1026
|
+
!__path_prefix_done_%out_slice
|
|
1027
|
+
!__path_prefix_idx_%out_slice
|
|
1028
|
+
jmp L_PATH_FILE_PREFIX_SCAN_%out_slice
|
|
1029
|
+
|
|
1030
|
+
L_PATH_FILE_PREFIX_FOUND_%out_slice:
|
|
1031
|
+
EXPAND STR_SLICE %out_slice, __path_prefix_base_%out_slice, 0, __path_prefix_idx_%out_slice
|
|
1032
|
+
!__path_prefix_is_dot_%out_slice
|
|
1033
|
+
!__path_prefix_ch_%out_slice
|
|
1034
|
+
!__path_prefix_ch_ptr_%out_slice
|
|
1035
|
+
!__path_prefix_done_%out_slice
|
|
1036
|
+
!__path_prefix_idx_%out_slice
|
|
1037
|
+
!__path_prefix_empty_%out_slice
|
|
1038
|
+
!__path_prefix_base_len_%out_slice
|
|
1039
|
+
!__path_prefix_base_ptr_%out_slice
|
|
1040
|
+
!__path_prefix_base_%out_slice
|
|
1041
|
+
jmp L_PATH_FILE_PREFIX_END_%out_slice
|
|
1042
|
+
|
|
1043
|
+
L_PATH_FILE_PREFIX_NO_DOT_%out_slice:
|
|
1044
|
+
EXPAND STR_SLICE %out_slice, __path_prefix_base_%out_slice, 0, __path_prefix_base_len_%out_slice
|
|
1045
|
+
!__path_prefix_done_%out_slice
|
|
1046
|
+
!__path_prefix_idx_%out_slice
|
|
1047
|
+
!__path_prefix_empty_%out_slice
|
|
1048
|
+
!__path_prefix_base_len_%out_slice
|
|
1049
|
+
!__path_prefix_base_ptr_%out_slice
|
|
1050
|
+
!__path_prefix_base_%out_slice
|
|
1051
|
+
jmp L_PATH_FILE_PREFIX_END_%out_slice
|
|
1052
|
+
|
|
1053
|
+
L_PATH_FILE_PREFIX_EMPTY_%out_slice:
|
|
1054
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1055
|
+
!__path_prefix_empty_%out_slice
|
|
1056
|
+
!__path_prefix_base_len_%out_slice
|
|
1057
|
+
!__path_prefix_base_ptr_%out_slice
|
|
1058
|
+
!__path_prefix_base_%out_slice
|
|
1059
|
+
jmp L_PATH_FILE_PREFIX_END_%out_slice
|
|
1060
|
+
|
|
1061
|
+
L_PATH_FILE_PREFIX_END_%out_slice:
|
|
1062
|
+
[END_MACRO]
|
|
1063
|
+
|
|
1064
|
+
[MACRO] PATH_TRY_FILE_PREFIX %out_ok, %out_slice, %path_slice
|
|
1065
|
+
EXPAND PATH_TRY_FILE_NAME __path_try_prefix_name_ok_%out_ok, __path_try_prefix_name_%out_ok, %path_slice
|
|
1066
|
+
br __path_try_prefix_name_ok_%out_ok -> L_PATH_TRY_FILE_PREFIX_SOME_%out_ok, L_PATH_TRY_FILE_PREFIX_NONE_%out_ok
|
|
1067
|
+
|
|
1068
|
+
L_PATH_TRY_FILE_PREFIX_SOME_%out_ok:
|
|
1069
|
+
EXPAND PATH_FILE_PREFIX %out_slice, %path_slice
|
|
1070
|
+
%out_ok = add 0, 1
|
|
1071
|
+
!__path_try_prefix_name_%out_ok
|
|
1072
|
+
!__path_try_prefix_name_ok_%out_ok
|
|
1073
|
+
jmp L_PATH_TRY_FILE_PREFIX_END_%out_ok
|
|
1074
|
+
|
|
1075
|
+
L_PATH_TRY_FILE_PREFIX_NONE_%out_ok:
|
|
1076
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1077
|
+
%out_ok = add 0, 0
|
|
1078
|
+
!__path_try_prefix_name_%out_ok
|
|
1079
|
+
!__path_try_prefix_name_ok_%out_ok
|
|
1080
|
+
|
|
1081
|
+
L_PATH_TRY_FILE_PREFIX_END_%out_ok:
|
|
1082
|
+
[END_MACRO]
|
|
1083
|
+
|
|
1084
|
+
[MACRO] PATH_FILE_NAME %out_slice, %path_slice
|
|
1085
|
+
EXPAND PATH_BASENAME %out_slice, %path_slice
|
|
1086
|
+
[END_MACRO]
|
|
1087
|
+
|
|
1088
|
+
[MACRO] PATH_TRY_FILE_NAME %out_ok, %out_slice, %path_slice
|
|
1089
|
+
EXPAND PATH_BASENAME __path_try_file_name_base_%out_ok, %path_slice
|
|
1090
|
+
__path_try_file_name_len_%out_ok = load __path_try_file_name_base_%out_ok+Slice_len as u64
|
|
1091
|
+
__path_try_file_name_empty_%out_ok = eq __path_try_file_name_len_%out_ok, 0
|
|
1092
|
+
br __path_try_file_name_empty_%out_ok -> L_PATH_TRY_FILE_NAME_NONE_%out_ok, L_PATH_TRY_FILE_NAME_CHECK_ROOT_%out_ok
|
|
1093
|
+
|
|
1094
|
+
L_PATH_TRY_FILE_NAME_CHECK_ROOT_%out_ok:
|
|
1095
|
+
__path_try_file_name_ptr_%out_ok = load __path_try_file_name_base_%out_ok+Slice_ptr as ptr
|
|
1096
|
+
__path_try_file_name_one_%out_ok = eq __path_try_file_name_len_%out_ok, 1
|
|
1097
|
+
__path_try_file_name_first_%out_ok = load __path_try_file_name_ptr_%out_ok+0 as u8
|
|
1098
|
+
__path_try_file_name_slash_%out_ok = eq __path_try_file_name_first_%out_ok, 47
|
|
1099
|
+
__path_try_file_name_root_%out_ok = and __path_try_file_name_one_%out_ok, __path_try_file_name_slash_%out_ok
|
|
1100
|
+
br __path_try_file_name_root_%out_ok -> L_PATH_TRY_FILE_NAME_NONE_AFTER_ROOT_%out_ok, L_PATH_TRY_FILE_NAME_SOME_%out_ok
|
|
1101
|
+
|
|
1102
|
+
L_PATH_TRY_FILE_NAME_SOME_%out_ok:
|
|
1103
|
+
EXPAND STR_SLICE %out_slice, __path_try_file_name_base_%out_ok, 0, __path_try_file_name_len_%out_ok
|
|
1104
|
+
%out_ok = add 0, 1
|
|
1105
|
+
!__path_try_file_name_root_%out_ok
|
|
1106
|
+
!__path_try_file_name_slash_%out_ok
|
|
1107
|
+
!__path_try_file_name_first_%out_ok
|
|
1108
|
+
!__path_try_file_name_one_%out_ok
|
|
1109
|
+
!__path_try_file_name_ptr_%out_ok
|
|
1110
|
+
!__path_try_file_name_empty_%out_ok
|
|
1111
|
+
!__path_try_file_name_len_%out_ok
|
|
1112
|
+
!__path_try_file_name_base_%out_ok
|
|
1113
|
+
jmp L_PATH_TRY_FILE_NAME_END_%out_ok
|
|
1114
|
+
|
|
1115
|
+
L_PATH_TRY_FILE_NAME_NONE_AFTER_ROOT_%out_ok:
|
|
1116
|
+
!__path_try_file_name_root_%out_ok
|
|
1117
|
+
!__path_try_file_name_slash_%out_ok
|
|
1118
|
+
!__path_try_file_name_first_%out_ok
|
|
1119
|
+
!__path_try_file_name_one_%out_ok
|
|
1120
|
+
!__path_try_file_name_ptr_%out_ok
|
|
1121
|
+
!__path_try_file_name_empty_%out_ok
|
|
1122
|
+
jmp L_PATH_TRY_FILE_NAME_NONE_AFTER_CHECK_%out_ok
|
|
1123
|
+
|
|
1124
|
+
L_PATH_TRY_FILE_NAME_NONE_%out_ok:
|
|
1125
|
+
!__path_try_file_name_empty_%out_ok
|
|
1126
|
+
jmp L_PATH_TRY_FILE_NAME_NONE_AFTER_CHECK_%out_ok
|
|
1127
|
+
|
|
1128
|
+
L_PATH_TRY_FILE_NAME_NONE_AFTER_CHECK_%out_ok:
|
|
1129
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1130
|
+
%out_ok = add 0, 0
|
|
1131
|
+
!__path_try_file_name_len_%out_ok
|
|
1132
|
+
!__path_try_file_name_base_%out_ok
|
|
1133
|
+
|
|
1134
|
+
L_PATH_TRY_FILE_NAME_END_%out_ok:
|
|
1135
|
+
[END_MACRO]
|
|
1136
|
+
|
|
1137
|
+
[MACRO] PATH_EXTENSION %out_slice, %path_slice
|
|
1138
|
+
EXPAND PATH_EXT %out_slice, %path_slice
|
|
1139
|
+
[END_MACRO]
|
|
1140
|
+
|
|
1141
|
+
[MACRO] PATH_TRY_EXTENSION %out_ok, %out_slice, %path_slice
|
|
1142
|
+
EXPAND PATH_EXTENSION %out_slice, %path_slice
|
|
1143
|
+
__path_try_ext_len_%out_ok = load %out_slice+Slice_len as u64
|
|
1144
|
+
%out_ok = ne __path_try_ext_len_%out_ok, 0
|
|
1145
|
+
!__path_try_ext_len_%out_ok
|
|
1146
|
+
[END_MACRO]
|
|
1147
|
+
|
|
1148
|
+
[MACRO] PATH_TRY_FILE_STEM %out_ok, %out_slice, %path_slice
|
|
1149
|
+
EXPAND PATH_TRY_FILE_NAME __path_try_stem_name_ok_%out_ok, __path_try_stem_name_%out_ok, %path_slice
|
|
1150
|
+
br __path_try_stem_name_ok_%out_ok -> L_PATH_TRY_FILE_STEM_SOME_%out_ok, L_PATH_TRY_FILE_STEM_NONE_%out_ok
|
|
1151
|
+
|
|
1152
|
+
L_PATH_TRY_FILE_STEM_SOME_%out_ok:
|
|
1153
|
+
EXPAND PATH_FILE_STEM %out_slice, %path_slice
|
|
1154
|
+
%out_ok = add 0, 1
|
|
1155
|
+
!__path_try_stem_name_%out_ok
|
|
1156
|
+
!__path_try_stem_name_ok_%out_ok
|
|
1157
|
+
jmp L_PATH_TRY_FILE_STEM_END_%out_ok
|
|
1158
|
+
|
|
1159
|
+
L_PATH_TRY_FILE_STEM_NONE_%out_ok:
|
|
1160
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1161
|
+
%out_ok = add 0, 0
|
|
1162
|
+
!__path_try_stem_name_%out_ok
|
|
1163
|
+
!__path_try_stem_name_ok_%out_ok
|
|
1164
|
+
|
|
1165
|
+
L_PATH_TRY_FILE_STEM_END_%out_ok:
|
|
1166
|
+
[END_MACRO]
|
|
1167
|
+
|
|
1168
|
+
[MACRO] PATH_TRY_PARENT %out_ok, %out_slice, %path_slice
|
|
1169
|
+
EXPAND PATH_TRIM_TRAILING_SEPARATOR __path_try_parent_trim_%out_ok, %path_slice
|
|
1170
|
+
__path_try_parent_len_%out_ok = load __path_try_parent_trim_%out_ok+Slice_len as u64
|
|
1171
|
+
__path_try_parent_empty_%out_ok = eq __path_try_parent_len_%out_ok, 0
|
|
1172
|
+
br __path_try_parent_empty_%out_ok -> L_PATH_TRY_PARENT_NONE_%out_ok, L_PATH_TRY_PARENT_CHECK_ROOT_%out_ok
|
|
1173
|
+
|
|
1174
|
+
L_PATH_TRY_PARENT_CHECK_ROOT_%out_ok:
|
|
1175
|
+
__path_try_parent_ptr_%out_ok = load __path_try_parent_trim_%out_ok+Slice_ptr as ptr
|
|
1176
|
+
__path_try_parent_one_%out_ok = eq __path_try_parent_len_%out_ok, 1
|
|
1177
|
+
__path_try_parent_first_%out_ok = load __path_try_parent_ptr_%out_ok+0 as u8
|
|
1178
|
+
__path_try_parent_slash_%out_ok = eq __path_try_parent_first_%out_ok, 47
|
|
1179
|
+
__path_try_parent_root_%out_ok = and __path_try_parent_one_%out_ok, __path_try_parent_slash_%out_ok
|
|
1180
|
+
br __path_try_parent_root_%out_ok -> L_PATH_TRY_PARENT_NONE_AFTER_ROOT_%out_ok, L_PATH_TRY_PARENT_SOME_%out_ok
|
|
1181
|
+
|
|
1182
|
+
L_PATH_TRY_PARENT_SOME_%out_ok:
|
|
1183
|
+
EXPAND PATH_PARENT %out_slice, __path_try_parent_trim_%out_ok
|
|
1184
|
+
%out_ok = add 0, 1
|
|
1185
|
+
!__path_try_parent_root_%out_ok
|
|
1186
|
+
!__path_try_parent_slash_%out_ok
|
|
1187
|
+
!__path_try_parent_first_%out_ok
|
|
1188
|
+
!__path_try_parent_one_%out_ok
|
|
1189
|
+
!__path_try_parent_ptr_%out_ok
|
|
1190
|
+
!__path_try_parent_empty_%out_ok
|
|
1191
|
+
!__path_try_parent_len_%out_ok
|
|
1192
|
+
!__path_try_parent_trim_%out_ok
|
|
1193
|
+
jmp L_PATH_TRY_PARENT_END_%out_ok
|
|
1194
|
+
|
|
1195
|
+
L_PATH_TRY_PARENT_NONE_AFTER_ROOT_%out_ok:
|
|
1196
|
+
!__path_try_parent_root_%out_ok
|
|
1197
|
+
!__path_try_parent_slash_%out_ok
|
|
1198
|
+
!__path_try_parent_first_%out_ok
|
|
1199
|
+
!__path_try_parent_one_%out_ok
|
|
1200
|
+
!__path_try_parent_ptr_%out_ok
|
|
1201
|
+
!__path_try_parent_empty_%out_ok
|
|
1202
|
+
jmp L_PATH_TRY_PARENT_NONE_AFTER_CHECK_%out_ok
|
|
1203
|
+
|
|
1204
|
+
L_PATH_TRY_PARENT_NONE_%out_ok:
|
|
1205
|
+
!__path_try_parent_empty_%out_ok
|
|
1206
|
+
jmp L_PATH_TRY_PARENT_NONE_AFTER_CHECK_%out_ok
|
|
1207
|
+
|
|
1208
|
+
L_PATH_TRY_PARENT_NONE_AFTER_CHECK_%out_ok:
|
|
1209
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1210
|
+
%out_ok = add 0, 0
|
|
1211
|
+
!__path_try_parent_len_%out_ok
|
|
1212
|
+
!__path_try_parent_trim_%out_ok
|
|
1213
|
+
|
|
1214
|
+
L_PATH_TRY_PARENT_END_%out_ok:
|
|
1215
|
+
[END_MACRO]
|
|
1216
|
+
|
|
1217
|
+
[MACRO] PATH_TRY_TO_STR %out_ok, %out_slice, %path_slice
|
|
1218
|
+
__path_to_str_ptr_%out_ok = load %path_slice+Slice_ptr as ptr
|
|
1219
|
+
__path_to_str_len_%out_ok = load %path_slice+Slice_len as u64
|
|
1220
|
+
__path_to_str_status_%out_ok = call @sa_str_utf8_validate(__path_to_str_ptr_%out_ok, __path_to_str_len_%out_ok)
|
|
1221
|
+
__path_to_str_valid_%out_ok = eq __path_to_str_status_%out_ok, 0
|
|
1222
|
+
br __path_to_str_valid_%out_ok -> L_PATH_TO_STR_VALID_%out_ok, L_PATH_TO_STR_INVALID_%out_ok
|
|
1223
|
+
|
|
1224
|
+
L_PATH_TO_STR_VALID_%out_ok:
|
|
1225
|
+
EXPAND STR_FROM_PARTS %out_slice, __path_to_str_ptr_%out_ok, __path_to_str_len_%out_ok
|
|
1226
|
+
%out_ok = add 0, 1
|
|
1227
|
+
jmp L_PATH_TO_STR_END_%out_ok
|
|
1228
|
+
|
|
1229
|
+
L_PATH_TO_STR_INVALID_%out_ok:
|
|
1230
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1231
|
+
%out_ok = add 0, 0
|
|
1232
|
+
|
|
1233
|
+
L_PATH_TO_STR_END_%out_ok:
|
|
1234
|
+
!__path_to_str_valid_%out_ok
|
|
1235
|
+
!__path_to_str_status_%out_ok
|
|
1236
|
+
!__path_to_str_len_%out_ok
|
|
1237
|
+
!__path_to_str_ptr_%out_ok
|
|
1238
|
+
[END_MACRO]
|
|
1239
|
+
|
|
1240
|
+
// Rust method-name alias over PATH_TRY_TO_STR.
|
|
1241
|
+
[MACRO] PATH_TO_STR %out_ok, %out_slice, %path_slice
|
|
1242
|
+
EXPAND PATH_TRY_TO_STR %out_ok, %out_slice, %path_slice
|
|
1243
|
+
[END_MACRO]
|
|
1244
|
+
|
|
1245
|
+
[MACRO] DEFAULT_HASHER_WRITE_PATH %hasher, %path_slice
|
|
1246
|
+
__path_hash_ptr_%hasher = load %path_slice+Slice_ptr as ptr
|
|
1247
|
+
__path_hash_len_%hasher = load %path_slice+Slice_len as u64
|
|
1248
|
+
__path_hash_idx_slot_%hasher = stack_alloc 8
|
|
1249
|
+
__path_hash_start_slot_%hasher = stack_alloc 8
|
|
1250
|
+
__path_hash_chunk_slot_%hasher = stack_alloc 8
|
|
1251
|
+
__path_hash_write_ptr_slot_%hasher = stack_alloc 8
|
|
1252
|
+
__path_hash_write_len_slot_%hasher = stack_alloc 8
|
|
1253
|
+
__path_hash_write_idx_slot_%hasher = stack_alloc 8
|
|
1254
|
+
__path_hash_return_slot_%hasher = stack_alloc 8
|
|
1255
|
+
store __path_hash_idx_slot_%hasher+0, 0 as u64
|
|
1256
|
+
store __path_hash_start_slot_%hasher+0, 0 as u64
|
|
1257
|
+
store __path_hash_chunk_slot_%hasher+0, 0 as u64
|
|
1258
|
+
jmp L_PATH_HASH_HEAD_%hasher
|
|
1259
|
+
|
|
1260
|
+
L_PATH_HASH_HEAD_%hasher:
|
|
1261
|
+
__path_hash_idx_%hasher = load __path_hash_idx_slot_%hasher+0 as u64
|
|
1262
|
+
__path_hash_done_%hasher = eq __path_hash_idx_%hasher, __path_hash_len_%hasher
|
|
1263
|
+
br __path_hash_done_%hasher -> L_PATH_HASH_EOF_%hasher, L_PATH_HASH_BODY_%hasher
|
|
1264
|
+
|
|
1265
|
+
L_PATH_HASH_BODY_%hasher:
|
|
1266
|
+
__path_hash_ch_ptr_%hasher = ptr_add __path_hash_ptr_%hasher, __path_hash_idx_%hasher
|
|
1267
|
+
__path_hash_ch_%hasher = load __path_hash_ch_ptr_%hasher+0 as u8
|
|
1268
|
+
__path_hash_is_sep_%hasher = eq __path_hash_ch_%hasher, 47
|
|
1269
|
+
br __path_hash_is_sep_%hasher -> L_PATH_HASH_SEPARATOR_%hasher, L_PATH_HASH_NEXT_%hasher
|
|
1270
|
+
|
|
1271
|
+
L_PATH_HASH_SEPARATOR_%hasher:
|
|
1272
|
+
__path_hash_start_%hasher = load __path_hash_start_slot_%hasher+0 as u64
|
|
1273
|
+
__path_hash_has_component_%hasher = ult __path_hash_start_%hasher, __path_hash_idx_%hasher
|
|
1274
|
+
br __path_hash_has_component_%hasher -> L_PATH_HASH_WRITE_COMPONENT_%hasher, L_PATH_HASH_AFTER_COMPONENT_%hasher
|
|
1275
|
+
|
|
1276
|
+
L_PATH_HASH_WRITE_COMPONENT_%hasher:
|
|
1277
|
+
__path_hash_component_len_%hasher = sub __path_hash_idx_%hasher, __path_hash_start_%hasher
|
|
1278
|
+
__path_hash_component_ptr_%hasher = ptr_add __path_hash_ptr_%hasher, __path_hash_start_%hasher
|
|
1279
|
+
__path_hash_chunk_%hasher = load __path_hash_chunk_slot_%hasher+0 as u64
|
|
1280
|
+
__path_hash_chunk_sum_%hasher = add __path_hash_chunk_%hasher, __path_hash_component_len_%hasher
|
|
1281
|
+
EXPAND NUM_U64_ROTATE_RIGHT __path_hash_chunk_next_%hasher, __path_hash_chunk_sum_%hasher, 2
|
|
1282
|
+
store __path_hash_chunk_slot_%hasher+0, __path_hash_chunk_next_%hasher as u64
|
|
1283
|
+
store __path_hash_write_ptr_slot_%hasher+0, __path_hash_component_ptr_%hasher as ptr
|
|
1284
|
+
store __path_hash_write_len_slot_%hasher+0, __path_hash_component_len_%hasher as u64
|
|
1285
|
+
store __path_hash_return_slot_%hasher+0, 1 as u64
|
|
1286
|
+
!__path_hash_chunk_next_%hasher
|
|
1287
|
+
!__path_hash_chunk_sum_%hasher
|
|
1288
|
+
!__path_hash_chunk_%hasher
|
|
1289
|
+
!__path_hash_component_ptr_%hasher
|
|
1290
|
+
!__path_hash_component_len_%hasher
|
|
1291
|
+
jmp L_PATH_HASH_WRITE_BYTES_INIT_%hasher
|
|
1292
|
+
|
|
1293
|
+
L_PATH_HASH_AFTER_COMPONENT_%hasher:
|
|
1294
|
+
__path_hash_next_start_%hasher = add __path_hash_idx_%hasher, 1
|
|
1295
|
+
store __path_hash_start_slot_%hasher+0, __path_hash_next_start_%hasher as u64
|
|
1296
|
+
__path_hash_tail_empty_%hasher = eq __path_hash_next_start_%hasher, __path_hash_len_%hasher
|
|
1297
|
+
br __path_hash_tail_empty_%hasher -> L_PATH_HASH_AFTER_DOT_CHECK_%hasher, L_PATH_HASH_CHECK_DOT_%hasher
|
|
1298
|
+
|
|
1299
|
+
L_PATH_HASH_CHECK_DOT_%hasher:
|
|
1300
|
+
__path_hash_tail_ptr_%hasher = ptr_add __path_hash_ptr_%hasher, __path_hash_next_start_%hasher
|
|
1301
|
+
__path_hash_tail_first_%hasher = load __path_hash_tail_ptr_%hasher+0 as u8
|
|
1302
|
+
__path_hash_tail_is_dot_%hasher = eq __path_hash_tail_first_%hasher, 46
|
|
1303
|
+
br __path_hash_tail_is_dot_%hasher -> L_PATH_HASH_CHECK_DOT_END_%hasher, L_PATH_HASH_NO_DOT_SKIP_%hasher
|
|
1304
|
+
|
|
1305
|
+
L_PATH_HASH_CHECK_DOT_END_%hasher:
|
|
1306
|
+
__path_hash_after_dot_%hasher = add __path_hash_next_start_%hasher, 1
|
|
1307
|
+
__path_hash_dot_at_end_%hasher = eq __path_hash_after_dot_%hasher, __path_hash_len_%hasher
|
|
1308
|
+
br __path_hash_dot_at_end_%hasher -> L_PATH_HASH_SKIP_DOT_%hasher, L_PATH_HASH_CHECK_DOT_SEP_%hasher
|
|
1309
|
+
|
|
1310
|
+
L_PATH_HASH_CHECK_DOT_SEP_%hasher:
|
|
1311
|
+
__path_hash_after_dot_ptr_%hasher = ptr_add __path_hash_ptr_%hasher, __path_hash_after_dot_%hasher
|
|
1312
|
+
__path_hash_after_dot_ch_%hasher = load __path_hash_after_dot_ptr_%hasher+0 as u8
|
|
1313
|
+
__path_hash_dot_then_sep_%hasher = eq __path_hash_after_dot_ch_%hasher, 47
|
|
1314
|
+
br __path_hash_dot_then_sep_%hasher -> L_PATH_HASH_SKIP_DOT_%hasher, L_PATH_HASH_NO_DOT_SKIP_AFTER_DOT_%hasher
|
|
1315
|
+
|
|
1316
|
+
L_PATH_HASH_SKIP_DOT_%hasher:
|
|
1317
|
+
store __path_hash_start_slot_%hasher+0, __path_hash_after_dot_%hasher as u64
|
|
1318
|
+
!__path_hash_after_dot_%hasher
|
|
1319
|
+
jmp L_PATH_HASH_AFTER_DOT_CHECK_%hasher
|
|
1320
|
+
|
|
1321
|
+
L_PATH_HASH_NO_DOT_SKIP_AFTER_DOT_%hasher:
|
|
1322
|
+
!__path_hash_dot_then_sep_%hasher
|
|
1323
|
+
!__path_hash_after_dot_ch_%hasher
|
|
1324
|
+
!__path_hash_after_dot_ptr_%hasher
|
|
1325
|
+
!__path_hash_dot_at_end_%hasher
|
|
1326
|
+
!__path_hash_after_dot_%hasher
|
|
1327
|
+
jmp L_PATH_HASH_AFTER_DOT_CHECK_%hasher
|
|
1328
|
+
|
|
1329
|
+
L_PATH_HASH_NO_DOT_SKIP_%hasher:
|
|
1330
|
+
!__path_hash_tail_is_dot_%hasher
|
|
1331
|
+
!__path_hash_tail_first_%hasher
|
|
1332
|
+
!__path_hash_tail_ptr_%hasher
|
|
1333
|
+
jmp L_PATH_HASH_AFTER_DOT_CHECK_%hasher
|
|
1334
|
+
|
|
1335
|
+
L_PATH_HASH_AFTER_DOT_CHECK_%hasher:
|
|
1336
|
+
!__path_hash_tail_empty_%hasher
|
|
1337
|
+
!__path_hash_next_start_%hasher
|
|
1338
|
+
!__path_hash_has_component_%hasher
|
|
1339
|
+
!__path_hash_start_%hasher
|
|
1340
|
+
jmp L_PATH_HASH_NEXT_%hasher
|
|
1341
|
+
|
|
1342
|
+
L_PATH_HASH_NEXT_%hasher:
|
|
1343
|
+
__path_hash_next_idx_%hasher = add __path_hash_idx_%hasher, 1
|
|
1344
|
+
store __path_hash_idx_slot_%hasher+0, __path_hash_next_idx_%hasher as u64
|
|
1345
|
+
!__path_hash_next_idx_%hasher
|
|
1346
|
+
!__path_hash_is_sep_%hasher
|
|
1347
|
+
!__path_hash_ch_%hasher
|
|
1348
|
+
!__path_hash_ch_ptr_%hasher
|
|
1349
|
+
!__path_hash_done_%hasher
|
|
1350
|
+
!__path_hash_idx_%hasher
|
|
1351
|
+
jmp L_PATH_HASH_HEAD_%hasher
|
|
1352
|
+
|
|
1353
|
+
L_PATH_HASH_EOF_%hasher:
|
|
1354
|
+
__path_hash_final_start_%hasher = load __path_hash_start_slot_%hasher+0 as u64
|
|
1355
|
+
__path_hash_has_tail_%hasher = ult __path_hash_final_start_%hasher, __path_hash_len_%hasher
|
|
1356
|
+
br __path_hash_has_tail_%hasher -> L_PATH_HASH_WRITE_TAIL_%hasher, L_PATH_HASH_FINISH_%hasher
|
|
1357
|
+
|
|
1358
|
+
L_PATH_HASH_WRITE_TAIL_%hasher:
|
|
1359
|
+
__path_hash_tail_len_%hasher = sub __path_hash_len_%hasher, __path_hash_final_start_%hasher
|
|
1360
|
+
__path_hash_tail_ptr_%hasher = ptr_add __path_hash_ptr_%hasher, __path_hash_final_start_%hasher
|
|
1361
|
+
__path_hash_tail_chunk_%hasher = load __path_hash_chunk_slot_%hasher+0 as u64
|
|
1362
|
+
__path_hash_tail_sum_%hasher = add __path_hash_tail_chunk_%hasher, __path_hash_tail_len_%hasher
|
|
1363
|
+
EXPAND NUM_U64_ROTATE_RIGHT __path_hash_tail_chunk_next_%hasher, __path_hash_tail_sum_%hasher, 2
|
|
1364
|
+
store __path_hash_chunk_slot_%hasher+0, __path_hash_tail_chunk_next_%hasher as u64
|
|
1365
|
+
store __path_hash_write_ptr_slot_%hasher+0, __path_hash_tail_ptr_%hasher as ptr
|
|
1366
|
+
store __path_hash_write_len_slot_%hasher+0, __path_hash_tail_len_%hasher as u64
|
|
1367
|
+
store __path_hash_return_slot_%hasher+0, 2 as u64
|
|
1368
|
+
!__path_hash_tail_chunk_next_%hasher
|
|
1369
|
+
!__path_hash_tail_sum_%hasher
|
|
1370
|
+
!__path_hash_tail_chunk_%hasher
|
|
1371
|
+
!__path_hash_tail_ptr_%hasher
|
|
1372
|
+
!__path_hash_tail_len_%hasher
|
|
1373
|
+
jmp L_PATH_HASH_WRITE_BYTES_INIT_%hasher
|
|
1374
|
+
|
|
1375
|
+
L_PATH_HASH_WRITE_BYTES_INIT_%hasher:
|
|
1376
|
+
store __path_hash_write_idx_slot_%hasher+0, 0 as u64
|
|
1377
|
+
jmp L_PATH_HASH_WRITE_BYTES_HEAD_%hasher
|
|
1378
|
+
|
|
1379
|
+
L_PATH_HASH_WRITE_BYTES_HEAD_%hasher:
|
|
1380
|
+
__path_hash_write_idx_%hasher = load __path_hash_write_idx_slot_%hasher+0 as u64
|
|
1381
|
+
__path_hash_write_len_%hasher = load __path_hash_write_len_slot_%hasher+0 as u64
|
|
1382
|
+
__path_hash_write_done_%hasher = eq __path_hash_write_idx_%hasher, __path_hash_write_len_%hasher
|
|
1383
|
+
br __path_hash_write_done_%hasher -> L_PATH_HASH_WRITE_BYTES_DONE_%hasher, L_PATH_HASH_WRITE_BYTES_BODY_%hasher
|
|
1384
|
+
|
|
1385
|
+
L_PATH_HASH_WRITE_BYTES_BODY_%hasher:
|
|
1386
|
+
__path_hash_write_ptr_%hasher = load __path_hash_write_ptr_slot_%hasher+0 as ptr
|
|
1387
|
+
__path_hash_write_item_%hasher = ptr_add __path_hash_write_ptr_%hasher, __path_hash_write_idx_%hasher
|
|
1388
|
+
__path_hash_write_value_%hasher = load __path_hash_write_item_%hasher+0 as u8
|
|
1389
|
+
EXPAND DEFAULT_HASHER_WRITE_U8 %hasher, __path_hash_write_value_%hasher
|
|
1390
|
+
__path_hash_write_next_%hasher = add __path_hash_write_idx_%hasher, 1
|
|
1391
|
+
store __path_hash_write_idx_slot_%hasher+0, __path_hash_write_next_%hasher as u64
|
|
1392
|
+
!__path_hash_write_next_%hasher
|
|
1393
|
+
!__path_hash_write_value_%hasher
|
|
1394
|
+
!__path_hash_write_item_%hasher
|
|
1395
|
+
!__path_hash_write_ptr_%hasher
|
|
1396
|
+
!__path_hash_write_done_%hasher
|
|
1397
|
+
!__path_hash_write_len_%hasher
|
|
1398
|
+
!__path_hash_write_idx_%hasher
|
|
1399
|
+
jmp L_PATH_HASH_WRITE_BYTES_HEAD_%hasher
|
|
1400
|
+
|
|
1401
|
+
L_PATH_HASH_WRITE_BYTES_DONE_%hasher:
|
|
1402
|
+
__path_hash_return_%hasher = load __path_hash_return_slot_%hasher+0 as u64
|
|
1403
|
+
__path_hash_return_component_%hasher = eq __path_hash_return_%hasher, 1
|
|
1404
|
+
br __path_hash_return_component_%hasher -> L_PATH_HASH_AFTER_COMPONENT_%hasher, L_PATH_HASH_FINISH_%hasher
|
|
1405
|
+
|
|
1406
|
+
L_PATH_HASH_FINISH_%hasher:
|
|
1407
|
+
__path_hash_chunk_final_%hasher = load __path_hash_chunk_slot_%hasher+0 as u64
|
|
1408
|
+
EXPAND DEFAULT_HASHER_WRITE_USIZE %hasher, __path_hash_chunk_final_%hasher
|
|
1409
|
+
!__path_hash_chunk_final_%hasher
|
|
1410
|
+
!__path_hash_has_tail_%hasher
|
|
1411
|
+
!__path_hash_final_start_%hasher
|
|
1412
|
+
!__path_hash_done_%hasher
|
|
1413
|
+
!__path_hash_idx_%hasher
|
|
1414
|
+
!__path_hash_len_%hasher
|
|
1415
|
+
!__path_hash_ptr_%hasher
|
|
1416
|
+
[END_MACRO]
|
|
1417
|
+
|
|
1418
|
+
[MACRO] PATH_HASH %out_hash, %path_slice
|
|
1419
|
+
__path_hash_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1420
|
+
EXPAND DEFAULT_HASHER_NEW __path_hash_hasher_%out_hash
|
|
1421
|
+
EXPAND DEFAULT_HASHER_WRITE_PATH __path_hash_hasher_%out_hash, %path_slice
|
|
1422
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __path_hash_hasher_%out_hash
|
|
1423
|
+
[END_MACRO]
|
|
1424
|
+
|
|
1425
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_PATH %out_hash, %builder, %path_slice
|
|
1426
|
+
__build_hash_one_path_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1427
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_path_hasher_%out_hash, %builder
|
|
1428
|
+
EXPAND DEFAULT_HASHER_WRITE_PATH __build_hash_one_path_hasher_%out_hash, %path_slice
|
|
1429
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_path_hasher_%out_hash
|
|
1430
|
+
[END_MACRO]
|
|
1431
|
+
|
|
1432
|
+
[MACRO] RANDOM_STATE_HASH_ONE_PATH %out_hash, %state, %path_slice
|
|
1433
|
+
__random_state_hash_one_path_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
1434
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_path_hasher_%out_hash, %state
|
|
1435
|
+
EXPAND DEFAULT_HASHER_WRITE_PATH __random_state_hash_one_path_hasher_%out_hash, %path_slice
|
|
1436
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_path_hasher_%out_hash
|
|
1437
|
+
[END_MACRO]
|
|
1438
|
+
|
|
1439
|
+
[MACRO] PATH_EXISTS %out_flag, %path_slice
|
|
1440
|
+
__path_exists_ptr_%out_flag = load %path_slice+Slice_ptr as ptr
|
|
1441
|
+
__path_exists_len_%out_flag = load %path_slice+Slice_len as u64
|
|
1442
|
+
EXPAND FS_EXISTS %out_flag, __path_exists_ptr_%out_flag, __path_exists_len_%out_flag
|
|
1443
|
+
!__path_exists_len_%out_flag
|
|
1444
|
+
!__path_exists_ptr_%out_flag
|
|
1445
|
+
[END_MACRO]
|
|
1446
|
+
|
|
1447
|
+
[MACRO] PATH_TRY_EXISTS %out_status, %out_flag, %path_slice
|
|
1448
|
+
__path_try_exists_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
1449
|
+
__path_try_exists_len_%out_status = load %path_slice+Slice_len as u64
|
|
1450
|
+
EXPAND FS_TRY_EXISTS %out_status, %out_flag, __path_try_exists_ptr_%out_status, __path_try_exists_len_%out_status
|
|
1451
|
+
!__path_try_exists_len_%out_status
|
|
1452
|
+
!__path_try_exists_ptr_%out_status
|
|
1453
|
+
[END_MACRO]
|
|
1454
|
+
|
|
1455
|
+
[MACRO] PATH_METADATA %out_status, %out_metadata, %path_slice
|
|
1456
|
+
__path_metadata_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
1457
|
+
__path_metadata_len_%out_status = load %path_slice+Slice_len as u64
|
|
1458
|
+
EXPAND FS_METADATA %out_status, %out_metadata, __path_metadata_ptr_%out_status, __path_metadata_len_%out_status
|
|
1459
|
+
!__path_metadata_len_%out_status
|
|
1460
|
+
!__path_metadata_ptr_%out_status
|
|
1461
|
+
[END_MACRO]
|
|
1462
|
+
|
|
1463
|
+
[MACRO] PATH_CANONICALIZE %out_status, %out_buffer, %path_slice
|
|
1464
|
+
__path_canonical_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
1465
|
+
__path_canonical_len_%out_status = load %path_slice+Slice_len as u64
|
|
1466
|
+
EXPAND FS_CANONICALIZE %out_status, %out_buffer, __path_canonical_ptr_%out_status, __path_canonical_len_%out_status
|
|
1467
|
+
!__path_canonical_len_%out_status
|
|
1468
|
+
!__path_canonical_ptr_%out_status
|
|
1469
|
+
[END_MACRO]
|
|
1470
|
+
|
|
1471
|
+
[MACRO] PATH_READ_LINK %out_status, %out_buffer, %path_slice
|
|
1472
|
+
__path_read_link_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
1473
|
+
__path_read_link_len_%out_status = load %path_slice+Slice_len as u64
|
|
1474
|
+
EXPAND FS_READ_LINK %out_status, %out_buffer, __path_read_link_ptr_%out_status, __path_read_link_len_%out_status
|
|
1475
|
+
!__path_read_link_len_%out_status
|
|
1476
|
+
!__path_read_link_ptr_%out_status
|
|
1477
|
+
[END_MACRO]
|
|
1478
|
+
|
|
1479
|
+
[MACRO] PATH_IS_FILE %out_flag, %path_slice
|
|
1480
|
+
__path_is_file_ptr_%out_flag = load %path_slice+Slice_ptr as ptr
|
|
1481
|
+
__path_is_file_len_%out_flag = load %path_slice+Slice_len as u64
|
|
1482
|
+
EXPAND FS_METADATA __path_is_file_status_%out_flag, __path_is_file_metadata_%out_flag, __path_is_file_ptr_%out_flag, __path_is_file_len_%out_flag
|
|
1483
|
+
__path_is_file_ok_%out_flag = eq __path_is_file_status_%out_flag, SA_FS_OK
|
|
1484
|
+
br __path_is_file_ok_%out_flag -> L_PATH_IS_FILE_OK_%out_flag, L_PATH_IS_FILE_MISS_%out_flag
|
|
1485
|
+
|
|
1486
|
+
L_PATH_IS_FILE_OK_%out_flag:
|
|
1487
|
+
EXPAND FS_METADATA_IS_FILE %out_flag, __path_is_file_metadata_%out_flag
|
|
1488
|
+
EXPAND FS_METADATA_FREE __path_is_file_free_status_%out_flag, __path_is_file_metadata_%out_flag
|
|
1489
|
+
!__path_is_file_free_status_%out_flag
|
|
1490
|
+
!__path_is_file_ok_%out_flag
|
|
1491
|
+
!__path_is_file_status_%out_flag
|
|
1492
|
+
!__path_is_file_metadata_%out_flag
|
|
1493
|
+
!__path_is_file_len_%out_flag
|
|
1494
|
+
!__path_is_file_ptr_%out_flag
|
|
1495
|
+
jmp L_PATH_IS_FILE_END_%out_flag
|
|
1496
|
+
|
|
1497
|
+
L_PATH_IS_FILE_MISS_%out_flag:
|
|
1498
|
+
%out_flag = add 0, 0
|
|
1499
|
+
!__path_is_file_ok_%out_flag
|
|
1500
|
+
!__path_is_file_status_%out_flag
|
|
1501
|
+
!__path_is_file_metadata_%out_flag
|
|
1502
|
+
!__path_is_file_len_%out_flag
|
|
1503
|
+
!__path_is_file_ptr_%out_flag
|
|
1504
|
+
|
|
1505
|
+
L_PATH_IS_FILE_END_%out_flag:
|
|
1506
|
+
[END_MACRO]
|
|
1507
|
+
|
|
1508
|
+
[MACRO] PATH_IS_DIR %out_flag, %path_slice
|
|
1509
|
+
__path_is_dir_ptr_%out_flag = load %path_slice+Slice_ptr as ptr
|
|
1510
|
+
__path_is_dir_len_%out_flag = load %path_slice+Slice_len as u64
|
|
1511
|
+
EXPAND FS_METADATA __path_is_dir_status_%out_flag, __path_is_dir_metadata_%out_flag, __path_is_dir_ptr_%out_flag, __path_is_dir_len_%out_flag
|
|
1512
|
+
__path_is_dir_ok_%out_flag = eq __path_is_dir_status_%out_flag, SA_FS_OK
|
|
1513
|
+
br __path_is_dir_ok_%out_flag -> L_PATH_IS_DIR_OK_%out_flag, L_PATH_IS_DIR_MISS_%out_flag
|
|
1514
|
+
|
|
1515
|
+
L_PATH_IS_DIR_OK_%out_flag:
|
|
1516
|
+
EXPAND FS_METADATA_IS_DIR %out_flag, __path_is_dir_metadata_%out_flag
|
|
1517
|
+
EXPAND FS_METADATA_FREE __path_is_dir_free_status_%out_flag, __path_is_dir_metadata_%out_flag
|
|
1518
|
+
!__path_is_dir_free_status_%out_flag
|
|
1519
|
+
!__path_is_dir_ok_%out_flag
|
|
1520
|
+
!__path_is_dir_status_%out_flag
|
|
1521
|
+
!__path_is_dir_metadata_%out_flag
|
|
1522
|
+
!__path_is_dir_len_%out_flag
|
|
1523
|
+
!__path_is_dir_ptr_%out_flag
|
|
1524
|
+
jmp L_PATH_IS_DIR_END_%out_flag
|
|
1525
|
+
|
|
1526
|
+
L_PATH_IS_DIR_MISS_%out_flag:
|
|
1527
|
+
%out_flag = add 0, 0
|
|
1528
|
+
!__path_is_dir_ok_%out_flag
|
|
1529
|
+
!__path_is_dir_status_%out_flag
|
|
1530
|
+
!__path_is_dir_metadata_%out_flag
|
|
1531
|
+
!__path_is_dir_len_%out_flag
|
|
1532
|
+
!__path_is_dir_ptr_%out_flag
|
|
1533
|
+
|
|
1534
|
+
L_PATH_IS_DIR_END_%out_flag:
|
|
1535
|
+
[END_MACRO]
|
|
1536
|
+
|
|
1537
|
+
[MACRO] PATH_IS_SYMLINK %out_flag, %path_slice
|
|
1538
|
+
__path_is_symlink_ptr_%out_flag = load %path_slice+Slice_ptr as ptr
|
|
1539
|
+
__path_is_symlink_len_%out_flag = load %path_slice+Slice_len as u64
|
|
1540
|
+
EXPAND FS_METADATA __path_is_symlink_status_%out_flag, __path_is_symlink_metadata_%out_flag, __path_is_symlink_ptr_%out_flag, __path_is_symlink_len_%out_flag
|
|
1541
|
+
__path_is_symlink_ok_%out_flag = eq __path_is_symlink_status_%out_flag, SA_FS_OK
|
|
1542
|
+
br __path_is_symlink_ok_%out_flag -> L_PATH_IS_SYMLINK_OK_%out_flag, L_PATH_IS_SYMLINK_MISS_%out_flag
|
|
1543
|
+
|
|
1544
|
+
L_PATH_IS_SYMLINK_OK_%out_flag:
|
|
1545
|
+
EXPAND FS_METADATA_IS_SYMLINK %out_flag, __path_is_symlink_metadata_%out_flag
|
|
1546
|
+
EXPAND FS_METADATA_FREE __path_is_symlink_free_status_%out_flag, __path_is_symlink_metadata_%out_flag
|
|
1547
|
+
!__path_is_symlink_free_status_%out_flag
|
|
1548
|
+
!__path_is_symlink_ok_%out_flag
|
|
1549
|
+
!__path_is_symlink_status_%out_flag
|
|
1550
|
+
!__path_is_symlink_metadata_%out_flag
|
|
1551
|
+
!__path_is_symlink_len_%out_flag
|
|
1552
|
+
!__path_is_symlink_ptr_%out_flag
|
|
1553
|
+
jmp L_PATH_IS_SYMLINK_END_%out_flag
|
|
1554
|
+
|
|
1555
|
+
L_PATH_IS_SYMLINK_MISS_%out_flag:
|
|
1556
|
+
%out_flag = add 0, 0
|
|
1557
|
+
!__path_is_symlink_ok_%out_flag
|
|
1558
|
+
!__path_is_symlink_status_%out_flag
|
|
1559
|
+
!__path_is_symlink_metadata_%out_flag
|
|
1560
|
+
!__path_is_symlink_len_%out_flag
|
|
1561
|
+
!__path_is_symlink_ptr_%out_flag
|
|
1562
|
+
|
|
1563
|
+
L_PATH_IS_SYMLINK_END_%out_flag:
|
|
1564
|
+
[END_MACRO]
|
|
1565
|
+
|
|
1566
|
+
[MACRO] PATH_STRIP_EXTENSION %out_slice, %path_slice
|
|
1567
|
+
EXPAND PATH_PARENT __path_strip_ext_parent_%out_slice, %path_slice
|
|
1568
|
+
EXPAND PATH_FILE_STEM __path_strip_ext_stem_%out_slice, %path_slice
|
|
1569
|
+
EXPAND PATH_JOIN %out_slice, __path_strip_ext_parent_%out_slice, __path_strip_ext_stem_%out_slice
|
|
1570
|
+
!__path_strip_ext_stem_%out_slice
|
|
1571
|
+
!__path_strip_ext_parent_%out_slice
|
|
1572
|
+
[END_MACRO]
|
|
1573
|
+
|
|
1574
|
+
[MACRO] PATH_WITH_FILE_NAME %out_slice, %path_slice, %file_name_slice
|
|
1575
|
+
EXPAND PATH_PARENT __path_parent_%out_slice, %path_slice
|
|
1576
|
+
EXPAND PATH_JOIN %out_slice, __path_parent_%out_slice, %file_name_slice
|
|
1577
|
+
!__path_parent_%out_slice
|
|
1578
|
+
[END_MACRO]
|
|
1579
|
+
|
|
1580
|
+
[MACRO] PATH_WITH_EXTENSION %out_slice, %path_slice, %extension_slice
|
|
1581
|
+
EXPAND PATH_STRIP_EXTENSION __path_no_ext_%out_slice, %path_slice
|
|
1582
|
+
__path_ext_len_%out_slice = load %extension_slice+Slice_len as u64
|
|
1583
|
+
__path_ext_empty_%out_slice = eq __path_ext_len_%out_slice, 0
|
|
1584
|
+
br __path_ext_empty_%out_slice -> L_PATH_WITH_EXTENSION_NO_EXT_%out_slice, L_PATH_WITH_EXTENSION_JOIN_%out_slice
|
|
1585
|
+
|
|
1586
|
+
L_PATH_WITH_EXTENSION_JOIN_%out_slice:
|
|
1587
|
+
__path_dot_ptr_%out_slice = stack_alloc 1
|
|
1588
|
+
store __path_dot_ptr_%out_slice+0, 46 as u8
|
|
1589
|
+
__path_dot_slice_%out_slice = alloc Slice_SIZE
|
|
1590
|
+
EXPAND SLICE_NEW __path_dot_slice_%out_slice, __path_dot_ptr_%out_slice, 1
|
|
1591
|
+
EXPAND STR_CONCAT __path_dot_ext_%out_slice, __path_dot_slice_%out_slice, %extension_slice
|
|
1592
|
+
EXPAND STR_CONCAT %out_slice, __path_no_ext_%out_slice, __path_dot_ext_%out_slice
|
|
1593
|
+
!__path_dot_ext_%out_slice
|
|
1594
|
+
!__path_dot_slice_%out_slice
|
|
1595
|
+
!__path_ext_empty_%out_slice
|
|
1596
|
+
!__path_ext_len_%out_slice
|
|
1597
|
+
!__path_no_ext_%out_slice
|
|
1598
|
+
jmp L_PATH_WITH_EXTENSION_END_%out_slice
|
|
1599
|
+
|
|
1600
|
+
L_PATH_WITH_EXTENSION_NO_EXT_%out_slice:
|
|
1601
|
+
__path_no_ext_len_%out_slice = load __path_no_ext_%out_slice+Slice_len as u64
|
|
1602
|
+
EXPAND STR_SLICE %out_slice, __path_no_ext_%out_slice, 0, __path_no_ext_len_%out_slice
|
|
1603
|
+
!__path_no_ext_len_%out_slice
|
|
1604
|
+
!__path_ext_empty_%out_slice
|
|
1605
|
+
!__path_ext_len_%out_slice
|
|
1606
|
+
!__path_no_ext_%out_slice
|
|
1607
|
+
|
|
1608
|
+
L_PATH_WITH_EXTENSION_END_%out_slice:
|
|
1609
|
+
[END_MACRO]
|
|
1610
|
+
|
|
1611
|
+
[MACRO] PATH_WITH_ADDED_EXTENSION %out_slice, %path_slice, %extension_slice
|
|
1612
|
+
__path_add_ext_len_%out_slice = load %extension_slice+Slice_len as u64
|
|
1613
|
+
__path_add_ext_empty_%out_slice = eq __path_add_ext_len_%out_slice, 0
|
|
1614
|
+
br __path_add_ext_empty_%out_slice -> L_PATH_ADD_EXTENSION_COPY_%out_slice, L_PATH_ADD_EXTENSION_JOIN_%out_slice
|
|
1615
|
+
|
|
1616
|
+
L_PATH_ADD_EXTENSION_JOIN_%out_slice:
|
|
1617
|
+
__path_add_dot_ptr_%out_slice = stack_alloc 1
|
|
1618
|
+
store __path_add_dot_ptr_%out_slice+0, 46 as u8
|
|
1619
|
+
__path_add_dot_slice_%out_slice = alloc Slice_SIZE
|
|
1620
|
+
EXPAND SLICE_NEW __path_add_dot_slice_%out_slice, __path_add_dot_ptr_%out_slice, 1
|
|
1621
|
+
EXPAND STR_CONCAT __path_add_dot_ext_%out_slice, __path_add_dot_slice_%out_slice, %extension_slice
|
|
1622
|
+
EXPAND STR_CONCAT %out_slice, %path_slice, __path_add_dot_ext_%out_slice
|
|
1623
|
+
!__path_add_dot_ext_%out_slice
|
|
1624
|
+
!__path_add_dot_slice_%out_slice
|
|
1625
|
+
!__path_add_ext_empty_%out_slice
|
|
1626
|
+
!__path_add_ext_len_%out_slice
|
|
1627
|
+
jmp L_PATH_ADD_EXTENSION_END_%out_slice
|
|
1628
|
+
|
|
1629
|
+
L_PATH_ADD_EXTENSION_COPY_%out_slice:
|
|
1630
|
+
__path_add_copy_len_%out_slice = load %path_slice+Slice_len as u64
|
|
1631
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_add_copy_len_%out_slice
|
|
1632
|
+
!__path_add_copy_len_%out_slice
|
|
1633
|
+
!__path_add_ext_empty_%out_slice
|
|
1634
|
+
!__path_add_ext_len_%out_slice
|
|
1635
|
+
|
|
1636
|
+
L_PATH_ADD_EXTENSION_END_%out_slice:
|
|
1637
|
+
[END_MACRO]
|
|
1638
|
+
|
|
1639
|
+
[MACRO] PATH_TRIM_TRAILING_SEPARATOR %out_slice, %path_slice
|
|
1640
|
+
__path_trim_sep_len_%out_slice = load %path_slice+Slice_len as u64
|
|
1641
|
+
__path_trim_sep_empty_%out_slice = eq __path_trim_sep_len_%out_slice, 0
|
|
1642
|
+
br __path_trim_sep_empty_%out_slice -> L_PATH_TRIM_SEP_EMPTY_%out_slice, L_PATH_TRIM_SEP_INIT_%out_slice
|
|
1643
|
+
|
|
1644
|
+
L_PATH_TRIM_SEP_INIT_%out_slice:
|
|
1645
|
+
__path_trim_sep_end_slot_%out_slice = stack_alloc 8
|
|
1646
|
+
store __path_trim_sep_end_slot_%out_slice+0, __path_trim_sep_len_%out_slice as u64
|
|
1647
|
+
jmp L_PATH_TRIM_SEP_HEAD_%out_slice
|
|
1648
|
+
|
|
1649
|
+
L_PATH_TRIM_SEP_HEAD_%out_slice:
|
|
1650
|
+
__path_trim_sep_end_%out_slice = load __path_trim_sep_end_slot_%out_slice+0 as u64
|
|
1651
|
+
__path_trim_sep_keep_root_%out_slice = ule __path_trim_sep_end_%out_slice, 1
|
|
1652
|
+
br __path_trim_sep_keep_root_%out_slice -> L_PATH_TRIM_SEP_COPY_CURRENT_%out_slice, L_PATH_TRIM_SEP_CHECK_LAST_%out_slice
|
|
1653
|
+
|
|
1654
|
+
L_PATH_TRIM_SEP_CHECK_LAST_%out_slice:
|
|
1655
|
+
__path_trim_sep_ptr_%out_slice = load %path_slice+Slice_ptr as ptr
|
|
1656
|
+
__path_trim_sep_prev_%out_slice = sub __path_trim_sep_end_%out_slice, 1
|
|
1657
|
+
__path_trim_sep_last_ptr_%out_slice = ptr_add __path_trim_sep_ptr_%out_slice, __path_trim_sep_prev_%out_slice
|
|
1658
|
+
__path_trim_sep_last_%out_slice = load __path_trim_sep_last_ptr_%out_slice+0 as u8
|
|
1659
|
+
__path_trim_sep_is_sep_%out_slice = eq __path_trim_sep_last_%out_slice, 47
|
|
1660
|
+
br __path_trim_sep_is_sep_%out_slice -> L_PATH_TRIM_SEP_DROP_%out_slice, L_PATH_TRIM_SEP_COPY_AFTER_CHECK_%out_slice
|
|
1661
|
+
|
|
1662
|
+
L_PATH_TRIM_SEP_DROP_%out_slice:
|
|
1663
|
+
store __path_trim_sep_end_slot_%out_slice+0, __path_trim_sep_prev_%out_slice as u64
|
|
1664
|
+
!__path_trim_sep_is_sep_%out_slice
|
|
1665
|
+
!__path_trim_sep_last_%out_slice
|
|
1666
|
+
!__path_trim_sep_last_ptr_%out_slice
|
|
1667
|
+
!__path_trim_sep_prev_%out_slice
|
|
1668
|
+
!__path_trim_sep_ptr_%out_slice
|
|
1669
|
+
!__path_trim_sep_keep_root_%out_slice
|
|
1670
|
+
!__path_trim_sep_end_%out_slice
|
|
1671
|
+
jmp L_PATH_TRIM_SEP_HEAD_%out_slice
|
|
1672
|
+
|
|
1673
|
+
L_PATH_TRIM_SEP_COPY_AFTER_CHECK_%out_slice:
|
|
1674
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_trim_sep_end_%out_slice
|
|
1675
|
+
!__path_trim_sep_is_sep_%out_slice
|
|
1676
|
+
!__path_trim_sep_last_%out_slice
|
|
1677
|
+
!__path_trim_sep_last_ptr_%out_slice
|
|
1678
|
+
!__path_trim_sep_prev_%out_slice
|
|
1679
|
+
!__path_trim_sep_ptr_%out_slice
|
|
1680
|
+
!__path_trim_sep_keep_root_%out_slice
|
|
1681
|
+
!__path_trim_sep_end_%out_slice
|
|
1682
|
+
!__path_trim_sep_empty_%out_slice
|
|
1683
|
+
!__path_trim_sep_len_%out_slice
|
|
1684
|
+
jmp L_PATH_TRIM_SEP_END_%out_slice
|
|
1685
|
+
|
|
1686
|
+
L_PATH_TRIM_SEP_COPY_CURRENT_%out_slice:
|
|
1687
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_trim_sep_end_%out_slice
|
|
1688
|
+
!__path_trim_sep_keep_root_%out_slice
|
|
1689
|
+
!__path_trim_sep_end_%out_slice
|
|
1690
|
+
!__path_trim_sep_empty_%out_slice
|
|
1691
|
+
!__path_trim_sep_len_%out_slice
|
|
1692
|
+
jmp L_PATH_TRIM_SEP_END_%out_slice
|
|
1693
|
+
|
|
1694
|
+
L_PATH_TRIM_SEP_EMPTY_%out_slice:
|
|
1695
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1696
|
+
!__path_trim_sep_empty_%out_slice
|
|
1697
|
+
!__path_trim_sep_len_%out_slice
|
|
1698
|
+
|
|
1699
|
+
L_PATH_TRIM_SEP_END_%out_slice:
|
|
1700
|
+
[END_MACRO]
|
|
1701
|
+
|
|
1702
|
+
[MACRO] PATH_WITH_TRAILING_SEPARATOR %out_slice, %path_slice
|
|
1703
|
+
EXPAND PATH_ENDS_WITH_SEPARATOR __path_with_sep_has_%out_slice, %path_slice
|
|
1704
|
+
br __path_with_sep_has_%out_slice -> L_PATH_WITH_SEP_COPY_%out_slice, L_PATH_WITH_SEP_APPEND_%out_slice
|
|
1705
|
+
|
|
1706
|
+
L_PATH_WITH_SEP_APPEND_%out_slice:
|
|
1707
|
+
EXPAND STR_FROM_PARTS __path_with_sep_sep_slice_%out_slice, &PATH_SEPARATOR, 1
|
|
1708
|
+
EXPAND STR_CONCAT %out_slice, %path_slice, __path_with_sep_sep_slice_%out_slice
|
|
1709
|
+
!__path_with_sep_sep_slice_%out_slice
|
|
1710
|
+
!__path_with_sep_has_%out_slice
|
|
1711
|
+
jmp L_PATH_WITH_SEP_END_%out_slice
|
|
1712
|
+
|
|
1713
|
+
L_PATH_WITH_SEP_COPY_%out_slice:
|
|
1714
|
+
__path_with_sep_len_%out_slice = load %path_slice+Slice_len as u64
|
|
1715
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_with_sep_len_%out_slice
|
|
1716
|
+
!__path_with_sep_len_%out_slice
|
|
1717
|
+
!__path_with_sep_has_%out_slice
|
|
1718
|
+
|
|
1719
|
+
L_PATH_WITH_SEP_END_%out_slice:
|
|
1720
|
+
[END_MACRO]
|
|
1721
|
+
|
|
1722
|
+
[MACRO] PATH_COMPONENT_COUNT %out_count, %path_slice
|
|
1723
|
+
__path_comp_ptr_%out_count = load %path_slice+Slice_ptr as ptr
|
|
1724
|
+
__path_comp_len_%out_count = load %path_slice+Slice_len as u64
|
|
1725
|
+
__path_comp_idx_slot_%out_count = stack_alloc 8
|
|
1726
|
+
__path_comp_in_slot_%out_count = stack_alloc 8
|
|
1727
|
+
store __path_comp_idx_slot_%out_count+0, 0 as u64
|
|
1728
|
+
store __path_comp_in_slot_%out_count+0, 0 as u64
|
|
1729
|
+
%out_count = add 0, 0
|
|
1730
|
+
jmp L_PATH_COMPONENT_COUNT_HEAD_%out_count
|
|
1731
|
+
|
|
1732
|
+
L_PATH_COMPONENT_COUNT_HEAD_%out_count:
|
|
1733
|
+
__path_comp_idx_%out_count = load __path_comp_idx_slot_%out_count+0 as u64
|
|
1734
|
+
__path_comp_done_%out_count = eq __path_comp_idx_%out_count, __path_comp_len_%out_count
|
|
1735
|
+
br __path_comp_done_%out_count -> L_PATH_COMPONENT_COUNT_DONE_%out_count, L_PATH_COMPONENT_COUNT_BODY_%out_count
|
|
1736
|
+
|
|
1737
|
+
L_PATH_COMPONENT_COUNT_BODY_%out_count:
|
|
1738
|
+
__path_comp_ch_ptr_%out_count = ptr_add __path_comp_ptr_%out_count, __path_comp_idx_%out_count
|
|
1739
|
+
__path_comp_ch_%out_count = load __path_comp_ch_ptr_%out_count+0 as u8
|
|
1740
|
+
__path_comp_is_sep_%out_count = eq __path_comp_ch_%out_count, 47
|
|
1741
|
+
br __path_comp_is_sep_%out_count -> L_PATH_COMPONENT_COUNT_SEP_%out_count, L_PATH_COMPONENT_COUNT_NON_SEP_%out_count
|
|
1742
|
+
|
|
1743
|
+
L_PATH_COMPONENT_COUNT_NON_SEP_%out_count:
|
|
1744
|
+
__path_comp_in_%out_count = load __path_comp_in_slot_%out_count+0 as u64
|
|
1745
|
+
__path_comp_was_out_%out_count = eq __path_comp_in_%out_count, 0
|
|
1746
|
+
br __path_comp_was_out_%out_count -> L_PATH_COMPONENT_COUNT_START_%out_count, L_PATH_COMPONENT_COUNT_NEXT_NON_SEP_%out_count
|
|
1747
|
+
|
|
1748
|
+
L_PATH_COMPONENT_COUNT_START_%out_count:
|
|
1749
|
+
%out_count = add %out_count, 1
|
|
1750
|
+
store __path_comp_in_slot_%out_count+0, 1 as u64
|
|
1751
|
+
!__path_comp_was_out_%out_count
|
|
1752
|
+
!__path_comp_in_%out_count
|
|
1753
|
+
jmp L_PATH_COMPONENT_COUNT_NEXT_%out_count
|
|
1754
|
+
|
|
1755
|
+
L_PATH_COMPONENT_COUNT_NEXT_NON_SEP_%out_count:
|
|
1756
|
+
!__path_comp_was_out_%out_count
|
|
1757
|
+
!__path_comp_in_%out_count
|
|
1758
|
+
jmp L_PATH_COMPONENT_COUNT_NEXT_%out_count
|
|
1759
|
+
|
|
1760
|
+
L_PATH_COMPONENT_COUNT_SEP_%out_count:
|
|
1761
|
+
store __path_comp_in_slot_%out_count+0, 0 as u64
|
|
1762
|
+
jmp L_PATH_COMPONENT_COUNT_NEXT_%out_count
|
|
1763
|
+
|
|
1764
|
+
L_PATH_COMPONENT_COUNT_NEXT_%out_count:
|
|
1765
|
+
__path_comp_next_%out_count = add __path_comp_idx_%out_count, 1
|
|
1766
|
+
store __path_comp_idx_slot_%out_count+0, __path_comp_next_%out_count as u64
|
|
1767
|
+
!__path_comp_next_%out_count
|
|
1768
|
+
!__path_comp_is_sep_%out_count
|
|
1769
|
+
!__path_comp_ch_%out_count
|
|
1770
|
+
!__path_comp_ch_ptr_%out_count
|
|
1771
|
+
!__path_comp_done_%out_count
|
|
1772
|
+
!__path_comp_idx_%out_count
|
|
1773
|
+
jmp L_PATH_COMPONENT_COUNT_HEAD_%out_count
|
|
1774
|
+
|
|
1775
|
+
L_PATH_COMPONENT_COUNT_DONE_%out_count:
|
|
1776
|
+
!__path_comp_done_%out_count
|
|
1777
|
+
!__path_comp_idx_%out_count
|
|
1778
|
+
!__path_comp_len_%out_count
|
|
1779
|
+
!__path_comp_ptr_%out_count
|
|
1780
|
+
[END_MACRO]
|
|
1781
|
+
|
|
1782
|
+
[MACRO] PATH_TRY_COMPONENT_AT %out_ok, %out_slice, %path_slice, %component_index
|
|
1783
|
+
__path_comp_at_ptr_%out_ok = load %path_slice+Slice_ptr as ptr
|
|
1784
|
+
__path_comp_at_len_%out_ok = load %path_slice+Slice_len as u64
|
|
1785
|
+
__path_comp_at_idx_slot_%out_ok = stack_alloc 8
|
|
1786
|
+
__path_comp_at_current_slot_%out_ok = stack_alloc 8
|
|
1787
|
+
__path_comp_at_in_slot_%out_ok = stack_alloc 8
|
|
1788
|
+
__path_comp_at_start_slot_%out_ok = stack_alloc 8
|
|
1789
|
+
store __path_comp_at_idx_slot_%out_ok+0, 0 as u64
|
|
1790
|
+
store __path_comp_at_current_slot_%out_ok+0, 0 as u64
|
|
1791
|
+
store __path_comp_at_in_slot_%out_ok+0, 0 as u64
|
|
1792
|
+
store __path_comp_at_start_slot_%out_ok+0, 0 as u64
|
|
1793
|
+
jmp L_PATH_COMPONENT_AT_HEAD_%out_ok
|
|
1794
|
+
|
|
1795
|
+
L_PATH_COMPONENT_AT_HEAD_%out_ok:
|
|
1796
|
+
__path_comp_at_idx_%out_ok = load __path_comp_at_idx_slot_%out_ok+0 as u64
|
|
1797
|
+
__path_comp_at_done_%out_ok = eq __path_comp_at_idx_%out_ok, __path_comp_at_len_%out_ok
|
|
1798
|
+
br __path_comp_at_done_%out_ok -> L_PATH_COMPONENT_AT_EOF_%out_ok, L_PATH_COMPONENT_AT_BODY_%out_ok
|
|
1799
|
+
|
|
1800
|
+
L_PATH_COMPONENT_AT_BODY_%out_ok:
|
|
1801
|
+
__path_comp_at_ch_ptr_%out_ok = ptr_add __path_comp_at_ptr_%out_ok, __path_comp_at_idx_%out_ok
|
|
1802
|
+
__path_comp_at_ch_%out_ok = load __path_comp_at_ch_ptr_%out_ok+0 as u8
|
|
1803
|
+
__path_comp_at_is_sep_%out_ok = eq __path_comp_at_ch_%out_ok, 47
|
|
1804
|
+
br __path_comp_at_is_sep_%out_ok -> L_PATH_COMPONENT_AT_SEP_%out_ok, L_PATH_COMPONENT_AT_NON_SEP_%out_ok
|
|
1805
|
+
|
|
1806
|
+
L_PATH_COMPONENT_AT_NON_SEP_%out_ok:
|
|
1807
|
+
__path_comp_at_in_%out_ok = load __path_comp_at_in_slot_%out_ok+0 as u64
|
|
1808
|
+
__path_comp_at_was_out_%out_ok = eq __path_comp_at_in_%out_ok, 0
|
|
1809
|
+
br __path_comp_at_was_out_%out_ok -> L_PATH_COMPONENT_AT_START_%out_ok, L_PATH_COMPONENT_AT_NEXT_NON_SEP_%out_ok
|
|
1810
|
+
|
|
1811
|
+
L_PATH_COMPONENT_AT_START_%out_ok:
|
|
1812
|
+
store __path_comp_at_start_slot_%out_ok+0, __path_comp_at_idx_%out_ok as u64
|
|
1813
|
+
store __path_comp_at_in_slot_%out_ok+0, 1 as u64
|
|
1814
|
+
!__path_comp_at_was_out_%out_ok
|
|
1815
|
+
!__path_comp_at_in_%out_ok
|
|
1816
|
+
jmp L_PATH_COMPONENT_AT_NEXT_%out_ok
|
|
1817
|
+
|
|
1818
|
+
L_PATH_COMPONENT_AT_NEXT_NON_SEP_%out_ok:
|
|
1819
|
+
!__path_comp_at_was_out_%out_ok
|
|
1820
|
+
!__path_comp_at_in_%out_ok
|
|
1821
|
+
jmp L_PATH_COMPONENT_AT_NEXT_%out_ok
|
|
1822
|
+
|
|
1823
|
+
L_PATH_COMPONENT_AT_SEP_%out_ok:
|
|
1824
|
+
__path_comp_at_in_%out_ok = load __path_comp_at_in_slot_%out_ok+0 as u64
|
|
1825
|
+
br __path_comp_at_in_%out_ok -> L_PATH_COMPONENT_AT_END_COMPONENT_%out_ok, L_PATH_COMPONENT_AT_NEXT_SEP_%out_ok
|
|
1826
|
+
|
|
1827
|
+
L_PATH_COMPONENT_AT_END_COMPONENT_%out_ok:
|
|
1828
|
+
__path_comp_at_current_%out_ok = load __path_comp_at_current_slot_%out_ok+0 as u64
|
|
1829
|
+
__path_comp_at_match_%out_ok = eq __path_comp_at_current_%out_ok, %component_index
|
|
1830
|
+
br __path_comp_at_match_%out_ok -> L_PATH_COMPONENT_AT_HIT_%out_ok, L_PATH_COMPONENT_AT_ADVANCE_COMPONENT_%out_ok
|
|
1831
|
+
|
|
1832
|
+
L_PATH_COMPONENT_AT_ADVANCE_COMPONENT_%out_ok:
|
|
1833
|
+
__path_comp_at_next_current_%out_ok = add __path_comp_at_current_%out_ok, 1
|
|
1834
|
+
store __path_comp_at_current_slot_%out_ok+0, __path_comp_at_next_current_%out_ok as u64
|
|
1835
|
+
store __path_comp_at_in_slot_%out_ok+0, 0 as u64
|
|
1836
|
+
!__path_comp_at_next_current_%out_ok
|
|
1837
|
+
!__path_comp_at_match_%out_ok
|
|
1838
|
+
!__path_comp_at_current_%out_ok
|
|
1839
|
+
!__path_comp_at_in_%out_ok
|
|
1840
|
+
jmp L_PATH_COMPONENT_AT_NEXT_%out_ok
|
|
1841
|
+
|
|
1842
|
+
L_PATH_COMPONENT_AT_NEXT_SEP_%out_ok:
|
|
1843
|
+
!__path_comp_at_in_%out_ok
|
|
1844
|
+
jmp L_PATH_COMPONENT_AT_NEXT_%out_ok
|
|
1845
|
+
|
|
1846
|
+
L_PATH_COMPONENT_AT_HIT_%out_ok:
|
|
1847
|
+
__path_comp_at_start_%out_ok = load __path_comp_at_start_slot_%out_ok+0 as u64
|
|
1848
|
+
__path_comp_at_part_len_%out_ok = sub __path_comp_at_idx_%out_ok, __path_comp_at_start_%out_ok
|
|
1849
|
+
EXPAND STR_SLICE %out_slice, %path_slice, __path_comp_at_start_%out_ok, __path_comp_at_part_len_%out_ok
|
|
1850
|
+
%out_ok = add 0, 1
|
|
1851
|
+
!__path_comp_at_part_len_%out_ok
|
|
1852
|
+
!__path_comp_at_start_%out_ok
|
|
1853
|
+
!__path_comp_at_match_%out_ok
|
|
1854
|
+
!__path_comp_at_current_%out_ok
|
|
1855
|
+
!__path_comp_at_in_%out_ok
|
|
1856
|
+
!__path_comp_at_is_sep_%out_ok
|
|
1857
|
+
!__path_comp_at_ch_%out_ok
|
|
1858
|
+
!__path_comp_at_ch_ptr_%out_ok
|
|
1859
|
+
!__path_comp_at_done_%out_ok
|
|
1860
|
+
!__path_comp_at_idx_%out_ok
|
|
1861
|
+
!__path_comp_at_len_%out_ok
|
|
1862
|
+
!__path_comp_at_ptr_%out_ok
|
|
1863
|
+
jmp L_PATH_COMPONENT_AT_END_%out_ok
|
|
1864
|
+
|
|
1865
|
+
L_PATH_COMPONENT_AT_NEXT_%out_ok:
|
|
1866
|
+
__path_comp_at_next_idx_%out_ok = add __path_comp_at_idx_%out_ok, 1
|
|
1867
|
+
store __path_comp_at_idx_slot_%out_ok+0, __path_comp_at_next_idx_%out_ok as u64
|
|
1868
|
+
!__path_comp_at_next_idx_%out_ok
|
|
1869
|
+
!__path_comp_at_is_sep_%out_ok
|
|
1870
|
+
!__path_comp_at_ch_%out_ok
|
|
1871
|
+
!__path_comp_at_ch_ptr_%out_ok
|
|
1872
|
+
!__path_comp_at_done_%out_ok
|
|
1873
|
+
!__path_comp_at_idx_%out_ok
|
|
1874
|
+
jmp L_PATH_COMPONENT_AT_HEAD_%out_ok
|
|
1875
|
+
|
|
1876
|
+
L_PATH_COMPONENT_AT_EOF_%out_ok:
|
|
1877
|
+
__path_comp_at_in_%out_ok = load __path_comp_at_in_slot_%out_ok+0 as u64
|
|
1878
|
+
br __path_comp_at_in_%out_ok -> L_PATH_COMPONENT_AT_EOF_COMPONENT_%out_ok, L_PATH_COMPONENT_AT_MISS_%out_ok
|
|
1879
|
+
|
|
1880
|
+
L_PATH_COMPONENT_AT_EOF_COMPONENT_%out_ok:
|
|
1881
|
+
__path_comp_at_current_%out_ok = load __path_comp_at_current_slot_%out_ok+0 as u64
|
|
1882
|
+
__path_comp_at_match_%out_ok = eq __path_comp_at_current_%out_ok, %component_index
|
|
1883
|
+
br __path_comp_at_match_%out_ok -> L_PATH_COMPONENT_AT_EOF_HIT_%out_ok, L_PATH_COMPONENT_AT_EOF_MISS_%out_ok
|
|
1884
|
+
|
|
1885
|
+
L_PATH_COMPONENT_AT_EOF_HIT_%out_ok:
|
|
1886
|
+
__path_comp_at_start_%out_ok = load __path_comp_at_start_slot_%out_ok+0 as u64
|
|
1887
|
+
__path_comp_at_part_len_%out_ok = sub __path_comp_at_len_%out_ok, __path_comp_at_start_%out_ok
|
|
1888
|
+
EXPAND STR_SLICE %out_slice, %path_slice, __path_comp_at_start_%out_ok, __path_comp_at_part_len_%out_ok
|
|
1889
|
+
%out_ok = add 0, 1
|
|
1890
|
+
!__path_comp_at_part_len_%out_ok
|
|
1891
|
+
!__path_comp_at_start_%out_ok
|
|
1892
|
+
!__path_comp_at_match_%out_ok
|
|
1893
|
+
!__path_comp_at_current_%out_ok
|
|
1894
|
+
!__path_comp_at_in_%out_ok
|
|
1895
|
+
!__path_comp_at_done_%out_ok
|
|
1896
|
+
!__path_comp_at_idx_%out_ok
|
|
1897
|
+
!__path_comp_at_len_%out_ok
|
|
1898
|
+
!__path_comp_at_ptr_%out_ok
|
|
1899
|
+
jmp L_PATH_COMPONENT_AT_END_%out_ok
|
|
1900
|
+
|
|
1901
|
+
L_PATH_COMPONENT_AT_EOF_MISS_%out_ok:
|
|
1902
|
+
!__path_comp_at_match_%out_ok
|
|
1903
|
+
!__path_comp_at_current_%out_ok
|
|
1904
|
+
!__path_comp_at_in_%out_ok
|
|
1905
|
+
jmp L_PATH_COMPONENT_AT_MISS_AFTER_EOF_%out_ok
|
|
1906
|
+
|
|
1907
|
+
L_PATH_COMPONENT_AT_MISS_%out_ok:
|
|
1908
|
+
!__path_comp_at_in_%out_ok
|
|
1909
|
+
jmp L_PATH_COMPONENT_AT_MISS_AFTER_EOF_%out_ok
|
|
1910
|
+
|
|
1911
|
+
L_PATH_COMPONENT_AT_MISS_AFTER_EOF_%out_ok:
|
|
1912
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1913
|
+
%out_ok = add 0, 0
|
|
1914
|
+
!__path_comp_at_done_%out_ok
|
|
1915
|
+
!__path_comp_at_idx_%out_ok
|
|
1916
|
+
!__path_comp_at_len_%out_ok
|
|
1917
|
+
!__path_comp_at_ptr_%out_ok
|
|
1918
|
+
|
|
1919
|
+
L_PATH_COMPONENT_AT_END_%out_ok:
|
|
1920
|
+
[END_MACRO]
|
|
1921
|
+
|
|
1922
|
+
// Rust method-name alias over PATH_TRY_COMPONENT_AT.
|
|
1923
|
+
[MACRO] PATH_COMPONENT_AT %out_ok, %out_slice, %path_slice, %component_index
|
|
1924
|
+
EXPAND PATH_TRY_COMPONENT_AT %out_ok, %out_slice, %path_slice, %component_index
|
|
1925
|
+
[END_MACRO]
|
|
1926
|
+
|
|
1927
|
+
[MACRO] PATH_TRY_COMPONENT_PREFIX_AT %out_ok, %out_slice, %path_slice, %component_index
|
|
1928
|
+
EXPAND PATH_TRY_COMPONENT_AT %out_ok, __path_prefix_component_%out_ok, %path_slice, %component_index
|
|
1929
|
+
br %out_ok -> L_PATH_COMPONENT_PREFIX_HIT_%out_ok, L_PATH_COMPONENT_PREFIX_MISS_%out_ok
|
|
1930
|
+
|
|
1931
|
+
L_PATH_COMPONENT_PREFIX_HIT_%out_ok:
|
|
1932
|
+
__path_prefix_path_ptr_%out_ok = load %path_slice+Slice_ptr as ptr
|
|
1933
|
+
__path_prefix_comp_ptr_%out_ok = load __path_prefix_component_%out_ok+Slice_ptr as ptr
|
|
1934
|
+
__path_prefix_comp_len_%out_ok = load __path_prefix_component_%out_ok+Slice_len as u64
|
|
1935
|
+
__path_prefix_path_len_%out_ok = load %path_slice+Slice_len as u64
|
|
1936
|
+
__path_prefix_scan_slot_%out_ok = stack_alloc 8
|
|
1937
|
+
store __path_prefix_scan_slot_%out_ok+0, 0 as u64
|
|
1938
|
+
jmp L_PATH_COMPONENT_PREFIX_SCAN_HEAD_%out_ok
|
|
1939
|
+
|
|
1940
|
+
L_PATH_COMPONENT_PREFIX_SCAN_HEAD_%out_ok:
|
|
1941
|
+
__path_prefix_scan_idx_%out_ok = load __path_prefix_scan_slot_%out_ok+0 as u64
|
|
1942
|
+
__path_prefix_scan_done_%out_ok = eq __path_prefix_scan_idx_%out_ok, __path_prefix_path_len_%out_ok
|
|
1943
|
+
br __path_prefix_scan_done_%out_ok -> L_PATH_COMPONENT_PREFIX_SCAN_MISS_%out_ok, L_PATH_COMPONENT_PREFIX_SCAN_BODY_%out_ok
|
|
1944
|
+
|
|
1945
|
+
L_PATH_COMPONENT_PREFIX_SCAN_BODY_%out_ok:
|
|
1946
|
+
__path_prefix_scan_ptr_%out_ok = ptr_add __path_prefix_path_ptr_%out_ok, __path_prefix_scan_idx_%out_ok
|
|
1947
|
+
__path_prefix_scan_hit_%out_ok = eq __path_prefix_scan_ptr_%out_ok, __path_prefix_comp_ptr_%out_ok
|
|
1948
|
+
br __path_prefix_scan_hit_%out_ok -> L_PATH_COMPONENT_PREFIX_SCAN_HIT_%out_ok, L_PATH_COMPONENT_PREFIX_SCAN_NEXT_%out_ok
|
|
1949
|
+
|
|
1950
|
+
L_PATH_COMPONENT_PREFIX_SCAN_NEXT_%out_ok:
|
|
1951
|
+
__path_prefix_scan_next_%out_ok = add __path_prefix_scan_idx_%out_ok, 1
|
|
1952
|
+
store __path_prefix_scan_slot_%out_ok+0, __path_prefix_scan_next_%out_ok as u64
|
|
1953
|
+
!__path_prefix_scan_next_%out_ok
|
|
1954
|
+
!__path_prefix_scan_hit_%out_ok
|
|
1955
|
+
!__path_prefix_scan_ptr_%out_ok
|
|
1956
|
+
!__path_prefix_scan_done_%out_ok
|
|
1957
|
+
!__path_prefix_scan_idx_%out_ok
|
|
1958
|
+
jmp L_PATH_COMPONENT_PREFIX_SCAN_HEAD_%out_ok
|
|
1959
|
+
|
|
1960
|
+
L_PATH_COMPONENT_PREFIX_SCAN_HIT_%out_ok:
|
|
1961
|
+
__path_prefix_end_offset_%out_ok = add __path_prefix_scan_idx_%out_ok, __path_prefix_comp_len_%out_ok
|
|
1962
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_prefix_end_offset_%out_ok
|
|
1963
|
+
!__path_prefix_end_offset_%out_ok
|
|
1964
|
+
!__path_prefix_scan_hit_%out_ok
|
|
1965
|
+
!__path_prefix_scan_ptr_%out_ok
|
|
1966
|
+
!__path_prefix_scan_done_%out_ok
|
|
1967
|
+
!__path_prefix_scan_idx_%out_ok
|
|
1968
|
+
!__path_prefix_path_len_%out_ok
|
|
1969
|
+
!__path_prefix_comp_len_%out_ok
|
|
1970
|
+
!__path_prefix_comp_ptr_%out_ok
|
|
1971
|
+
!__path_prefix_path_ptr_%out_ok
|
|
1972
|
+
!__path_prefix_component_%out_ok
|
|
1973
|
+
jmp L_PATH_COMPONENT_PREFIX_END_%out_ok
|
|
1974
|
+
|
|
1975
|
+
L_PATH_COMPONENT_PREFIX_SCAN_MISS_%out_ok:
|
|
1976
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1977
|
+
%out_ok = add 0, 0
|
|
1978
|
+
!__path_prefix_scan_done_%out_ok
|
|
1979
|
+
!__path_prefix_scan_idx_%out_ok
|
|
1980
|
+
!__path_prefix_path_len_%out_ok
|
|
1981
|
+
!__path_prefix_comp_len_%out_ok
|
|
1982
|
+
!__path_prefix_comp_ptr_%out_ok
|
|
1983
|
+
!__path_prefix_path_ptr_%out_ok
|
|
1984
|
+
!__path_prefix_component_%out_ok
|
|
1985
|
+
jmp L_PATH_COMPONENT_PREFIX_END_%out_ok
|
|
1986
|
+
|
|
1987
|
+
L_PATH_COMPONENT_PREFIX_MISS_%out_ok:
|
|
1988
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
1989
|
+
!__path_prefix_component_%out_ok
|
|
1990
|
+
|
|
1991
|
+
L_PATH_COMPONENT_PREFIX_END_%out_ok:
|
|
1992
|
+
[END_MACRO]
|
|
1993
|
+
|
|
1994
|
+
// Rust method-name alias over PATH_TRY_COMPONENT_PREFIX_AT.
|
|
1995
|
+
[MACRO] PATH_COMPONENT_PREFIX_AT %out_ok, %out_slice, %path_slice, %component_index
|
|
1996
|
+
EXPAND PATH_TRY_COMPONENT_PREFIX_AT %out_ok, %out_slice, %path_slice, %component_index
|
|
1997
|
+
[END_MACRO]
|
|
1998
|
+
|
|
1999
|
+
[MACRO] PATH_ANCESTOR_COUNT %out_count, %path_slice
|
|
2000
|
+
EXPAND PATH_COMPONENT_COUNT __path_ancestor_components_%out_count, %path_slice
|
|
2001
|
+
%out_count = add __path_ancestor_components_%out_count, 1
|
|
2002
|
+
!__path_ancestor_components_%out_count
|
|
2003
|
+
[END_MACRO]
|
|
2004
|
+
|
|
2005
|
+
[MACRO] PATH_TRY_ANCESTOR_AT %out_ok, %out_slice, %path_slice, %ancestor_index
|
|
2006
|
+
EXPAND PATH_COMPONENT_COUNT __path_ancestor_components_%out_ok, %path_slice
|
|
2007
|
+
__path_ancestor_len_%out_ok = load %path_slice+Slice_len as u64
|
|
2008
|
+
__path_ancestor_scan_slot_%out_ok = stack_alloc 8
|
|
2009
|
+
__path_ancestor_current_slot_%out_ok = stack_alloc 8
|
|
2010
|
+
__path_ancestor_in_slot_%out_ok = stack_alloc 8
|
|
2011
|
+
store __path_ancestor_scan_slot_%out_ok+0, 0 as u64
|
|
2012
|
+
store __path_ancestor_current_slot_%out_ok+0, 0 as u64
|
|
2013
|
+
store __path_ancestor_in_slot_%out_ok+0, 0 as u64
|
|
2014
|
+
__path_ancestor_is_self_%out_ok = eq %ancestor_index, 0
|
|
2015
|
+
br __path_ancestor_is_self_%out_ok -> L_PATH_ANCESTOR_SELF_%out_ok, L_PATH_ANCESTOR_CHECK_FITS_%out_ok
|
|
2016
|
+
|
|
2017
|
+
L_PATH_ANCESTOR_CHECK_FITS_%out_ok:
|
|
2018
|
+
__path_ancestor_fits_%out_ok = ule %ancestor_index, __path_ancestor_components_%out_ok
|
|
2019
|
+
br __path_ancestor_fits_%out_ok -> L_PATH_ANCESTOR_CHECK_TERMINAL_%out_ok, L_PATH_ANCESTOR_MISS_%out_ok
|
|
2020
|
+
|
|
2021
|
+
L_PATH_ANCESTOR_CHECK_TERMINAL_%out_ok:
|
|
2022
|
+
__path_ancestor_terminal_%out_ok = eq %ancestor_index, __path_ancestor_components_%out_ok
|
|
2023
|
+
br __path_ancestor_terminal_%out_ok -> L_PATH_ANCESTOR_TERMINAL_%out_ok, L_PATH_ANCESTOR_PREFIX_%out_ok
|
|
2024
|
+
|
|
2025
|
+
L_PATH_ANCESTOR_PREFIX_%out_ok:
|
|
2026
|
+
__path_ancestor_remaining_%out_ok = sub __path_ancestor_components_%out_ok, %ancestor_index
|
|
2027
|
+
__path_ancestor_target_%out_ok = sub __path_ancestor_remaining_%out_ok, 1
|
|
2028
|
+
__path_ancestor_ptr_%out_ok = load %path_slice+Slice_ptr as ptr
|
|
2029
|
+
!__path_ancestor_remaining_%out_ok
|
|
2030
|
+
jmp L_PATH_ANCESTOR_SCAN_HEAD_%out_ok
|
|
2031
|
+
|
|
2032
|
+
L_PATH_ANCESTOR_SCAN_HEAD_%out_ok:
|
|
2033
|
+
__path_ancestor_scan_%out_ok = load __path_ancestor_scan_slot_%out_ok+0 as u64
|
|
2034
|
+
__path_ancestor_done_%out_ok = eq __path_ancestor_scan_%out_ok, __path_ancestor_len_%out_ok
|
|
2035
|
+
br __path_ancestor_done_%out_ok -> L_PATH_ANCESTOR_SCAN_EOF_%out_ok, L_PATH_ANCESTOR_SCAN_BODY_%out_ok
|
|
2036
|
+
|
|
2037
|
+
L_PATH_ANCESTOR_SCAN_BODY_%out_ok:
|
|
2038
|
+
__path_ancestor_ch_ptr_%out_ok = ptr_add __path_ancestor_ptr_%out_ok, __path_ancestor_scan_%out_ok
|
|
2039
|
+
__path_ancestor_ch_%out_ok = load __path_ancestor_ch_ptr_%out_ok+0 as u8
|
|
2040
|
+
__path_ancestor_is_sep_%out_ok = eq __path_ancestor_ch_%out_ok, 47
|
|
2041
|
+
br __path_ancestor_is_sep_%out_ok -> L_PATH_ANCESTOR_SCAN_SEP_%out_ok, L_PATH_ANCESTOR_SCAN_NON_SEP_%out_ok
|
|
2042
|
+
|
|
2043
|
+
L_PATH_ANCESTOR_SCAN_NON_SEP_%out_ok:
|
|
2044
|
+
__path_ancestor_in_%out_ok = load __path_ancestor_in_slot_%out_ok+0 as u64
|
|
2045
|
+
__path_ancestor_was_out_%out_ok = eq __path_ancestor_in_%out_ok, 0
|
|
2046
|
+
br __path_ancestor_was_out_%out_ok -> L_PATH_ANCESTOR_SCAN_START_%out_ok, L_PATH_ANCESTOR_SCAN_NEXT_NON_SEP_%out_ok
|
|
2047
|
+
|
|
2048
|
+
L_PATH_ANCESTOR_SCAN_START_%out_ok:
|
|
2049
|
+
store __path_ancestor_in_slot_%out_ok+0, 1 as u64
|
|
2050
|
+
!__path_ancestor_was_out_%out_ok
|
|
2051
|
+
!__path_ancestor_in_%out_ok
|
|
2052
|
+
jmp L_PATH_ANCESTOR_SCAN_NEXT_%out_ok
|
|
2053
|
+
|
|
2054
|
+
L_PATH_ANCESTOR_SCAN_NEXT_NON_SEP_%out_ok:
|
|
2055
|
+
!__path_ancestor_was_out_%out_ok
|
|
2056
|
+
!__path_ancestor_in_%out_ok
|
|
2057
|
+
jmp L_PATH_ANCESTOR_SCAN_NEXT_%out_ok
|
|
2058
|
+
|
|
2059
|
+
L_PATH_ANCESTOR_SCAN_SEP_%out_ok:
|
|
2060
|
+
__path_ancestor_in_%out_ok = load __path_ancestor_in_slot_%out_ok+0 as u64
|
|
2061
|
+
br __path_ancestor_in_%out_ok -> L_PATH_ANCESTOR_SCAN_COMPONENT_END_%out_ok, L_PATH_ANCESTOR_SCAN_NEXT_SEP_%out_ok
|
|
2062
|
+
|
|
2063
|
+
L_PATH_ANCESTOR_SCAN_COMPONENT_END_%out_ok:
|
|
2064
|
+
__path_ancestor_current_%out_ok = load __path_ancestor_current_slot_%out_ok+0 as u64
|
|
2065
|
+
__path_ancestor_target_hit_%out_ok = eq __path_ancestor_current_%out_ok, __path_ancestor_target_%out_ok
|
|
2066
|
+
br __path_ancestor_target_hit_%out_ok -> L_PATH_ANCESTOR_SCAN_HIT_%out_ok, L_PATH_ANCESTOR_SCAN_ADVANCE_%out_ok
|
|
2067
|
+
|
|
2068
|
+
L_PATH_ANCESTOR_SCAN_ADVANCE_%out_ok:
|
|
2069
|
+
__path_ancestor_next_current_%out_ok = add __path_ancestor_current_%out_ok, 1
|
|
2070
|
+
store __path_ancestor_current_slot_%out_ok+0, __path_ancestor_next_current_%out_ok as u64
|
|
2071
|
+
store __path_ancestor_in_slot_%out_ok+0, 0 as u64
|
|
2072
|
+
!__path_ancestor_next_current_%out_ok
|
|
2073
|
+
!__path_ancestor_target_hit_%out_ok
|
|
2074
|
+
!__path_ancestor_current_%out_ok
|
|
2075
|
+
!__path_ancestor_in_%out_ok
|
|
2076
|
+
jmp L_PATH_ANCESTOR_SCAN_NEXT_%out_ok
|
|
2077
|
+
|
|
2078
|
+
L_PATH_ANCESTOR_SCAN_NEXT_SEP_%out_ok:
|
|
2079
|
+
!__path_ancestor_in_%out_ok
|
|
2080
|
+
jmp L_PATH_ANCESTOR_SCAN_NEXT_%out_ok
|
|
2081
|
+
|
|
2082
|
+
L_PATH_ANCESTOR_SCAN_NEXT_%out_ok:
|
|
2083
|
+
__path_ancestor_next_scan_%out_ok = add __path_ancestor_scan_%out_ok, 1
|
|
2084
|
+
store __path_ancestor_scan_slot_%out_ok+0, __path_ancestor_next_scan_%out_ok as u64
|
|
2085
|
+
!__path_ancestor_next_scan_%out_ok
|
|
2086
|
+
!__path_ancestor_is_sep_%out_ok
|
|
2087
|
+
!__path_ancestor_ch_%out_ok
|
|
2088
|
+
!__path_ancestor_ch_ptr_%out_ok
|
|
2089
|
+
!__path_ancestor_done_%out_ok
|
|
2090
|
+
!__path_ancestor_scan_%out_ok
|
|
2091
|
+
jmp L_PATH_ANCESTOR_SCAN_HEAD_%out_ok
|
|
2092
|
+
|
|
2093
|
+
L_PATH_ANCESTOR_SCAN_HIT_%out_ok:
|
|
2094
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_ancestor_scan_%out_ok
|
|
2095
|
+
%out_ok = add 0, 1
|
|
2096
|
+
!__path_ancestor_target_hit_%out_ok
|
|
2097
|
+
!__path_ancestor_current_%out_ok
|
|
2098
|
+
!__path_ancestor_in_%out_ok
|
|
2099
|
+
!__path_ancestor_is_sep_%out_ok
|
|
2100
|
+
!__path_ancestor_ch_%out_ok
|
|
2101
|
+
!__path_ancestor_ch_ptr_%out_ok
|
|
2102
|
+
!__path_ancestor_done_%out_ok
|
|
2103
|
+
!__path_ancestor_scan_%out_ok
|
|
2104
|
+
!__path_ancestor_ptr_%out_ok
|
|
2105
|
+
!__path_ancestor_target_%out_ok
|
|
2106
|
+
!__path_ancestor_terminal_%out_ok
|
|
2107
|
+
!__path_ancestor_fits_%out_ok
|
|
2108
|
+
!__path_ancestor_is_self_%out_ok
|
|
2109
|
+
!__path_ancestor_len_%out_ok
|
|
2110
|
+
!__path_ancestor_components_%out_ok
|
|
2111
|
+
jmp L_PATH_ANCESTOR_END_%out_ok
|
|
2112
|
+
|
|
2113
|
+
L_PATH_ANCESTOR_SCAN_EOF_%out_ok:
|
|
2114
|
+
__path_ancestor_in_%out_ok = load __path_ancestor_in_slot_%out_ok+0 as u64
|
|
2115
|
+
br __path_ancestor_in_%out_ok -> L_PATH_ANCESTOR_SCAN_EOF_COMPONENT_%out_ok, L_PATH_ANCESTOR_SCAN_MISS_%out_ok
|
|
2116
|
+
|
|
2117
|
+
L_PATH_ANCESTOR_SCAN_EOF_COMPONENT_%out_ok:
|
|
2118
|
+
__path_ancestor_current_%out_ok = load __path_ancestor_current_slot_%out_ok+0 as u64
|
|
2119
|
+
__path_ancestor_target_hit_%out_ok = eq __path_ancestor_current_%out_ok, __path_ancestor_target_%out_ok
|
|
2120
|
+
br __path_ancestor_target_hit_%out_ok -> L_PATH_ANCESTOR_SCAN_EOF_HIT_%out_ok, L_PATH_ANCESTOR_SCAN_EOF_MISS_%out_ok
|
|
2121
|
+
|
|
2122
|
+
L_PATH_ANCESTOR_SCAN_EOF_HIT_%out_ok:
|
|
2123
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_ancestor_len_%out_ok
|
|
2124
|
+
%out_ok = add 0, 1
|
|
2125
|
+
!__path_ancestor_target_hit_%out_ok
|
|
2126
|
+
!__path_ancestor_current_%out_ok
|
|
2127
|
+
!__path_ancestor_in_%out_ok
|
|
2128
|
+
!__path_ancestor_done_%out_ok
|
|
2129
|
+
!__path_ancestor_scan_%out_ok
|
|
2130
|
+
!__path_ancestor_ptr_%out_ok
|
|
2131
|
+
!__path_ancestor_target_%out_ok
|
|
2132
|
+
!__path_ancestor_terminal_%out_ok
|
|
2133
|
+
!__path_ancestor_fits_%out_ok
|
|
2134
|
+
!__path_ancestor_is_self_%out_ok
|
|
2135
|
+
!__path_ancestor_len_%out_ok
|
|
2136
|
+
!__path_ancestor_components_%out_ok
|
|
2137
|
+
jmp L_PATH_ANCESTOR_END_%out_ok
|
|
2138
|
+
|
|
2139
|
+
L_PATH_ANCESTOR_SCAN_EOF_MISS_%out_ok:
|
|
2140
|
+
!__path_ancestor_target_hit_%out_ok
|
|
2141
|
+
!__path_ancestor_current_%out_ok
|
|
2142
|
+
!__path_ancestor_in_%out_ok
|
|
2143
|
+
jmp L_PATH_ANCESTOR_SCAN_MISS_AFTER_EOF_%out_ok
|
|
2144
|
+
|
|
2145
|
+
L_PATH_ANCESTOR_SCAN_MISS_%out_ok:
|
|
2146
|
+
!__path_ancestor_in_%out_ok
|
|
2147
|
+
jmp L_PATH_ANCESTOR_SCAN_MISS_AFTER_EOF_%out_ok
|
|
2148
|
+
|
|
2149
|
+
L_PATH_ANCESTOR_SCAN_MISS_AFTER_EOF_%out_ok:
|
|
2150
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
2151
|
+
%out_ok = add 0, 0
|
|
2152
|
+
!__path_ancestor_done_%out_ok
|
|
2153
|
+
!__path_ancestor_scan_%out_ok
|
|
2154
|
+
!__path_ancestor_ptr_%out_ok
|
|
2155
|
+
!__path_ancestor_target_%out_ok
|
|
2156
|
+
!__path_ancestor_terminal_%out_ok
|
|
2157
|
+
!__path_ancestor_fits_%out_ok
|
|
2158
|
+
!__path_ancestor_is_self_%out_ok
|
|
2159
|
+
!__path_ancestor_len_%out_ok
|
|
2160
|
+
!__path_ancestor_components_%out_ok
|
|
2161
|
+
jmp L_PATH_ANCESTOR_END_%out_ok
|
|
2162
|
+
|
|
2163
|
+
L_PATH_ANCESTOR_TERMINAL_%out_ok:
|
|
2164
|
+
EXPAND PATH_IS_ABSOLUTE __path_ancestor_abs_%out_ok, %path_slice
|
|
2165
|
+
br __path_ancestor_abs_%out_ok -> L_PATH_ANCESTOR_ROOT_%out_ok, L_PATH_ANCESTOR_EMPTY_%out_ok
|
|
2166
|
+
|
|
2167
|
+
L_PATH_ANCESTOR_ROOT_%out_ok:
|
|
2168
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, 1
|
|
2169
|
+
%out_ok = add 0, 1
|
|
2170
|
+
!__path_ancestor_abs_%out_ok
|
|
2171
|
+
!__path_ancestor_terminal_%out_ok
|
|
2172
|
+
!__path_ancestor_fits_%out_ok
|
|
2173
|
+
!__path_ancestor_is_self_%out_ok
|
|
2174
|
+
!__path_ancestor_len_%out_ok
|
|
2175
|
+
!__path_ancestor_components_%out_ok
|
|
2176
|
+
jmp L_PATH_ANCESTOR_END_%out_ok
|
|
2177
|
+
|
|
2178
|
+
L_PATH_ANCESTOR_EMPTY_%out_ok:
|
|
2179
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
2180
|
+
%out_ok = add 0, 1
|
|
2181
|
+
!__path_ancestor_abs_%out_ok
|
|
2182
|
+
!__path_ancestor_terminal_%out_ok
|
|
2183
|
+
!__path_ancestor_fits_%out_ok
|
|
2184
|
+
!__path_ancestor_is_self_%out_ok
|
|
2185
|
+
!__path_ancestor_len_%out_ok
|
|
2186
|
+
!__path_ancestor_components_%out_ok
|
|
2187
|
+
jmp L_PATH_ANCESTOR_END_%out_ok
|
|
2188
|
+
|
|
2189
|
+
L_PATH_ANCESTOR_SELF_%out_ok:
|
|
2190
|
+
EXPAND STR_SLICE %out_slice, %path_slice, 0, __path_ancestor_len_%out_ok
|
|
2191
|
+
%out_ok = add 0, 1
|
|
2192
|
+
!__path_ancestor_len_%out_ok
|
|
2193
|
+
!__path_ancestor_is_self_%out_ok
|
|
2194
|
+
!__path_ancestor_components_%out_ok
|
|
2195
|
+
jmp L_PATH_ANCESTOR_END_%out_ok
|
|
2196
|
+
|
|
2197
|
+
L_PATH_ANCESTOR_MISS_%out_ok:
|
|
2198
|
+
EXPAND PATH_MAKE_EMPTY %out_slice
|
|
2199
|
+
%out_ok = add 0, 0
|
|
2200
|
+
!__path_ancestor_fits_%out_ok
|
|
2201
|
+
!__path_ancestor_is_self_%out_ok
|
|
2202
|
+
!__path_ancestor_len_%out_ok
|
|
2203
|
+
!__path_ancestor_components_%out_ok
|
|
2204
|
+
|
|
2205
|
+
L_PATH_ANCESTOR_END_%out_ok:
|
|
2206
|
+
[END_MACRO]
|
|
2207
|
+
|
|
2208
|
+
// Rust method-name alias over PATH_TRY_ANCESTOR_AT.
|
|
2209
|
+
[MACRO] PATH_ANCESTOR_AT %out_ok, %out_slice, %path_slice, %ancestor_index
|
|
2210
|
+
EXPAND PATH_TRY_ANCESTOR_AT %out_ok, %out_slice, %path_slice, %ancestor_index
|
|
2211
|
+
[END_MACRO]
|
|
2212
|
+
|
|
2213
|
+
|
|
2214
|
+
// Concrete owned PathBuf facade over StringBuf / Vec-u8 storage.
|
|
2215
|
+
// Path queries reuse the existing PATH_* Slice helpers via PATH_BUF_AS_PATH.
|
|
2216
|
+
|
|
2217
|
+
[MACRO] PATH_BUF_NEW %out_path_buf
|
|
2218
|
+
EXPAND STRING_BUF_NEW %out_path_buf
|
|
2219
|
+
[END_MACRO]
|
|
2220
|
+
|
|
2221
|
+
[MACRO] PATH_BUF_DEFAULT %out_path_buf
|
|
2222
|
+
EXPAND PATH_BUF_NEW %out_path_buf
|
|
2223
|
+
[END_MACRO]
|
|
2224
|
+
|
|
2225
|
+
[MACRO] PATH_BUF_WITH_CAPACITY %out_path_buf, %capacity
|
|
2226
|
+
EXPAND STRING_BUF_WITH_CAPACITY %out_path_buf, %capacity
|
|
2227
|
+
[END_MACRO]
|
|
2228
|
+
|
|
2229
|
+
[MACRO] PATH_BUF_TRY_WITH_CAPACITY %out_ok, %out_path_buf, %capacity
|
|
2230
|
+
EXPAND STRING_BUF_TRY_WITH_CAPACITY %out_ok, %out_path_buf, %capacity
|
|
2231
|
+
[END_MACRO]
|
|
2232
|
+
|
|
2233
|
+
[MACRO] PATH_BUF_FROM_PATH %out_path_buf, %path_slice
|
|
2234
|
+
EXPAND STRING_BUF_FROM_STR %out_path_buf, %path_slice
|
|
2235
|
+
[END_MACRO]
|
|
2236
|
+
|
|
2237
|
+
[MACRO] PATH_BUF_FROM_STR %out_path_buf, %path_slice
|
|
2238
|
+
EXPAND PATH_BUF_FROM_PATH %out_path_buf, %path_slice
|
|
2239
|
+
[END_MACRO]
|
|
2240
|
+
|
|
2241
|
+
[MACRO] PATH_BUF_FREE %path_buf
|
|
2242
|
+
EXPAND STRING_BUF_FREE %path_buf
|
|
2243
|
+
[END_MACRO]
|
|
2244
|
+
|
|
2245
|
+
[MACRO] PATH_BUF_CLEAR %path_buf
|
|
2246
|
+
EXPAND STRING_BUF_CLEAR %path_buf
|
|
2247
|
+
[END_MACRO]
|
|
2248
|
+
|
|
2249
|
+
[MACRO] PATH_BUF_LEN %out_len, %path_buf
|
|
2250
|
+
EXPAND STRING_BUF_LEN %out_len, %path_buf
|
|
2251
|
+
[END_MACRO]
|
|
2252
|
+
|
|
2253
|
+
[MACRO] PATH_BUF_CAPACITY %out_cap, %path_buf
|
|
2254
|
+
EXPAND STRING_BUF_CAPACITY %out_cap, %path_buf
|
|
2255
|
+
[END_MACRO]
|
|
2256
|
+
|
|
2257
|
+
[MACRO] PATH_BUF_IS_EMPTY %out_bool, %path_buf
|
|
2258
|
+
EXPAND STRING_BUF_IS_EMPTY %out_bool, %path_buf
|
|
2259
|
+
[END_MACRO]
|
|
2260
|
+
|
|
2261
|
+
[MACRO] PATH_BUF_RESERVE %path_buf, %additional
|
|
2262
|
+
EXPAND STRING_BUF_RESERVE %path_buf, %additional
|
|
2263
|
+
[END_MACRO]
|
|
2264
|
+
|
|
2265
|
+
[MACRO] PATH_BUF_CLONE %out_path_buf, %path_buf
|
|
2266
|
+
EXPAND STRING_BUF_CLONE %out_path_buf, %path_buf
|
|
2267
|
+
[END_MACRO]
|
|
2268
|
+
|
|
2269
|
+
[MACRO] PATH_BUF_AS_PATH %out_slice, %path_buf
|
|
2270
|
+
EXPAND STRING_BUF_AS_STR %out_slice, %path_buf
|
|
2271
|
+
[END_MACRO]
|
|
2272
|
+
|
|
2273
|
+
[MACRO] PATH_BUF_AS_STR %out_slice, %path_buf
|
|
2274
|
+
EXPAND PATH_BUF_AS_PATH %out_slice, %path_buf
|
|
2275
|
+
[END_MACRO]
|
|
2276
|
+
|
|
2277
|
+
[MACRO] DEFAULT_HASHER_WRITE_PATH_BUF %hasher, %path_buf
|
|
2278
|
+
EXPAND PATH_BUF_AS_PATH __path_buf_hash_view_%hasher, %path_buf
|
|
2279
|
+
EXPAND DEFAULT_HASHER_WRITE_PATH %hasher, __path_buf_hash_view_%hasher
|
|
2280
|
+
!__path_buf_hash_view_%hasher
|
|
2281
|
+
[END_MACRO]
|
|
2282
|
+
|
|
2283
|
+
[MACRO] PATH_BUF_HASH %out_hash, %path_buf
|
|
2284
|
+
EXPAND PATH_BUF_AS_PATH __path_buf_hash_view_%out_hash, %path_buf
|
|
2285
|
+
EXPAND PATH_HASH %out_hash, __path_buf_hash_view_%out_hash
|
|
2286
|
+
!__path_buf_hash_view_%out_hash
|
|
2287
|
+
[END_MACRO]
|
|
2288
|
+
|
|
2289
|
+
[MACRO] BUILD_HASHER_DEFAULT_HASH_ONE_PATH_BUF %out_hash, %builder, %path_buf
|
|
2290
|
+
__build_hash_one_path_buf_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
2291
|
+
EXPAND BUILD_HASHER_DEFAULT_BUILD __build_hash_one_path_buf_hasher_%out_hash, %builder
|
|
2292
|
+
EXPAND DEFAULT_HASHER_WRITE_PATH_BUF __build_hash_one_path_buf_hasher_%out_hash, %path_buf
|
|
2293
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __build_hash_one_path_buf_hasher_%out_hash
|
|
2294
|
+
[END_MACRO]
|
|
2295
|
+
|
|
2296
|
+
[MACRO] RANDOM_STATE_HASH_ONE_PATH_BUF %out_hash, %state, %path_buf
|
|
2297
|
+
__random_state_hash_one_path_buf_hasher_%out_hash = stack_alloc DefaultHasher_SIZE
|
|
2298
|
+
EXPAND RANDOM_STATE_BUILD __random_state_hash_one_path_buf_hasher_%out_hash, %state
|
|
2299
|
+
EXPAND DEFAULT_HASHER_WRITE_PATH_BUF __random_state_hash_one_path_buf_hasher_%out_hash, %path_buf
|
|
2300
|
+
EXPAND DEFAULT_HASHER_FINISH %out_hash, __random_state_hash_one_path_buf_hasher_%out_hash
|
|
2301
|
+
[END_MACRO]
|
|
2302
|
+
|
|
2303
|
+
[MACRO] PATH_BUF_PUSH %path_buf, %child_slice
|
|
2304
|
+
EXPAND PATH_BUF_AS_PATH __pb_push_view_%path_buf, %path_buf
|
|
2305
|
+
EXPAND PATH_JOIN __pb_push_joined_%path_buf, __pb_push_view_%path_buf, %child_slice
|
|
2306
|
+
EXPAND STRING_BUF_FROM_STR __pb_push_tmp_%path_buf, __pb_push_joined_%path_buf
|
|
2307
|
+
EXPAND STRING_BUF_CLONE_FROM %path_buf, __pb_push_tmp_%path_buf
|
|
2308
|
+
EXPAND STRING_BUF_FREE __pb_push_tmp_%path_buf
|
|
2309
|
+
!__pb_push_joined_%path_buf
|
|
2310
|
+
!__pb_push_view_%path_buf
|
|
2311
|
+
[END_MACRO]
|
|
2312
|
+
|
|
2313
|
+
[MACRO] PATH_BUF_POP %out_ok, %path_buf
|
|
2314
|
+
EXPAND PATH_BUF_AS_PATH __pb_pop_view_%out_ok, %path_buf
|
|
2315
|
+
EXPAND PATH_TRY_PARENT __pb_pop_has_%out_ok, __pb_pop_parent_%out_ok, __pb_pop_view_%out_ok
|
|
2316
|
+
br __pb_pop_has_%out_ok -> L_PB_POP_APPLY_%out_ok, L_PB_POP_FAIL_%out_ok
|
|
2317
|
+
|
|
2318
|
+
L_PB_POP_APPLY_%out_ok:
|
|
2319
|
+
EXPAND STRING_BUF_CLEAR %path_buf
|
|
2320
|
+
EXPAND STRING_BUF_PUSH_STR %path_buf, __pb_pop_parent_%out_ok
|
|
2321
|
+
%out_ok = add 0, 1
|
|
2322
|
+
!__pb_pop_parent_%out_ok
|
|
2323
|
+
!__pb_pop_has_%out_ok
|
|
2324
|
+
!__pb_pop_view_%out_ok
|
|
2325
|
+
jmp L_PB_POP_END_%out_ok
|
|
2326
|
+
|
|
2327
|
+
L_PB_POP_FAIL_%out_ok:
|
|
2328
|
+
%out_ok = add 0, 0
|
|
2329
|
+
!__pb_pop_parent_%out_ok
|
|
2330
|
+
!__pb_pop_has_%out_ok
|
|
2331
|
+
!__pb_pop_view_%out_ok
|
|
2332
|
+
jmp L_PB_POP_END_%out_ok
|
|
2333
|
+
|
|
2334
|
+
L_PB_POP_END_%out_ok:
|
|
2335
|
+
[END_MACRO]
|
|
2336
|
+
|
|
2337
|
+
[MACRO] PATH_BUF_SET_FILE_NAME %path_buf, %file_name_slice
|
|
2338
|
+
EXPAND STRING_BUF_AS_STR __pb_set_name_view_%path_buf, %path_buf
|
|
2339
|
+
EXPAND PATH_WITH_FILE_NAME __pb_set_name_new_%path_buf, __pb_set_name_view_%path_buf, %file_name_slice
|
|
2340
|
+
EXPAND STRING_BUF_CLEAR %path_buf
|
|
2341
|
+
EXPAND STRING_BUF_PUSH_STR %path_buf, __pb_set_name_new_%path_buf
|
|
2342
|
+
!__pb_set_name_new_%path_buf
|
|
2343
|
+
!__pb_set_name_view_%path_buf
|
|
2344
|
+
[END_MACRO]
|
|
2345
|
+
|
|
2346
|
+
[MACRO] PATH_BUF_SET_EXTENSION %path_buf, %extension_slice
|
|
2347
|
+
EXPAND STRING_BUF_AS_STR __pb_set_ext_view_%path_buf, %path_buf
|
|
2348
|
+
EXPAND PATH_WITH_EXTENSION __pb_set_ext_new_%path_buf, __pb_set_ext_view_%path_buf, %extension_slice
|
|
2349
|
+
EXPAND STRING_BUF_CLEAR %path_buf
|
|
2350
|
+
EXPAND STRING_BUF_PUSH_STR %path_buf, __pb_set_ext_new_%path_buf
|
|
2351
|
+
!__pb_set_ext_new_%path_buf
|
|
2352
|
+
!__pb_set_ext_view_%path_buf
|
|
2353
|
+
[END_MACRO]
|
|
2354
|
+
|
|
2355
|
+
[MACRO] PATH_BUF_PUSH_TRAILING_SEPARATOR %path_buf
|
|
2356
|
+
EXPAND STRING_BUF_AS_STR __pb_trail_view_%path_buf, %path_buf
|
|
2357
|
+
EXPAND PATH_WITH_TRAILING_SEPARATOR __pb_trail_new_%path_buf, __pb_trail_view_%path_buf
|
|
2358
|
+
EXPAND STRING_BUF_CLEAR %path_buf
|
|
2359
|
+
EXPAND STRING_BUF_PUSH_STR %path_buf, __pb_trail_new_%path_buf
|
|
2360
|
+
!__pb_trail_new_%path_buf
|
|
2361
|
+
!__pb_trail_view_%path_buf
|
|
2362
|
+
[END_MACRO]
|
|
2363
|
+
|
|
2364
|
+
[MACRO] PATH_BUF_EXISTS %out_flag, %path_buf
|
|
2365
|
+
EXPAND PATH_BUF_AS_PATH __pb_exists_view_%path_buf, %path_buf
|
|
2366
|
+
EXPAND PATH_EXISTS %out_flag, __pb_exists_view_%path_buf
|
|
2367
|
+
!__pb_exists_view_%path_buf
|
|
2368
|
+
[END_MACRO]
|
|
2369
|
+
|
|
2370
|
+
[MACRO] PATH_BUF_IS_FILE %out_flag, %path_buf
|
|
2371
|
+
EXPAND PATH_BUF_AS_PATH __pb_is_file_view_%path_buf, %path_buf
|
|
2372
|
+
EXPAND PATH_IS_FILE %out_flag, __pb_is_file_view_%path_buf
|
|
2373
|
+
!__pb_is_file_view_%path_buf
|
|
2374
|
+
[END_MACRO]
|
|
2375
|
+
|
|
2376
|
+
[MACRO] PATH_BUF_IS_DIR %out_flag, %path_buf
|
|
2377
|
+
EXPAND PATH_BUF_AS_PATH __pb_is_dir_view_%path_buf, %path_buf
|
|
2378
|
+
EXPAND PATH_IS_DIR %out_flag, __pb_is_dir_view_%path_buf
|
|
2379
|
+
!__pb_is_dir_view_%path_buf
|
|
2380
|
+
[END_MACRO]
|
|
2381
|
+
|
|
2382
|
+
[MACRO] PATH_BUF_CAPACITY_REMAINING %out_remaining, %path_buf
|
|
2383
|
+
EXPAND STRING_BUF_CAPACITY_REMAINING %out_remaining, %path_buf
|
|
2384
|
+
[END_MACRO]
|
|
2385
|
+
|
|
2386
|
+
[MACRO] PATH_BUF_REMAINING_CAPACITY %out_remaining, %path_buf
|
|
2387
|
+
EXPAND PATH_BUF_CAPACITY_REMAINING %out_remaining, %path_buf
|
|
2388
|
+
[END_MACRO]
|
|
2389
|
+
|
|
2390
|
+
[MACRO] PATH_BUF_EXTRA_CAPACITY %out_remaining, %path_buf
|
|
2391
|
+
EXPAND PATH_BUF_CAPACITY_REMAINING %out_remaining, %path_buf
|
|
2392
|
+
[END_MACRO]
|
|
2393
|
+
|
|
2394
|
+
[MACRO] PATH_BUF_LIT1 %out_path_buf, %s0
|
|
2395
|
+
EXPAND PATH_BUF_FROM_PATH %out_path_buf, %s0
|
|
2396
|
+
[END_MACRO]
|
|
2397
|
+
|
|
2398
|
+
[MACRO] PATH_BUF_LIT2 %out_path_buf, %s0, %s1
|
|
2399
|
+
EXPAND PATH_BUF_FROM_PATH %out_path_buf, %s0
|
|
2400
|
+
EXPAND PATH_BUF_PUSH %out_path_buf, %s1
|
|
2401
|
+
[END_MACRO]
|
|
2402
|
+
|
|
2403
|
+
[MACRO] PATH_BUF_LIT3 %out_path_buf, %s0, %s1, %s2
|
|
2404
|
+
EXPAND PATH_BUF_FROM_PATH %out_path_buf, %s0
|
|
2405
|
+
EXPAND PATH_BUF_PUSH %out_path_buf, %s1
|
|
2406
|
+
EXPAND PATH_BUF_PUSH %out_path_buf, %s2
|
|
2407
|
+
[END_MACRO]
|
|
2408
|
+
|
|
2409
|
+
// PathBuf <-> OsString/OsStr concrete Unix byte-buffer conversions.
|
|
2410
|
+
|
|
2411
|
+
[MACRO] PATH_BUF_AS_OS_STR %out_os_str, %path_buf
|
|
2412
|
+
EXPAND PATH_BUF_AS_PATH %out_os_str, %path_buf
|
|
2413
|
+
[END_MACRO]
|
|
2414
|
+
|
|
2415
|
+
[MACRO] PATH_BUF_FROM_OS_STR %out_path_buf, %os_str
|
|
2416
|
+
EXPAND OS_STR_AS_BYTES __pb_from_os_str_bytes_%out_path_buf, %os_str
|
|
2417
|
+
EXPAND PATH_BUF_FROM_PATH %out_path_buf, __pb_from_os_str_bytes_%out_path_buf
|
|
2418
|
+
!__pb_from_os_str_bytes_%out_path_buf
|
|
2419
|
+
[END_MACRO]
|
|
2420
|
+
|
|
2421
|
+
[MACRO] PATH_BUF_FROM_OS_STRING %out_path_buf, %os_string
|
|
2422
|
+
EXPAND OS_STRING_AS_SLICE __pb_from_os_string_bytes_%out_path_buf, %os_string
|
|
2423
|
+
EXPAND PATH_BUF_FROM_PATH %out_path_buf, __pb_from_os_string_bytes_%out_path_buf
|
|
2424
|
+
!__pb_from_os_string_bytes_%out_path_buf
|
|
2425
|
+
[END_MACRO]
|
|
2426
|
+
|
|
2427
|
+
[MACRO] PATH_BUF_INTO_OS_STRING %out_os_string, %path_buf
|
|
2428
|
+
EXPAND PATH_BUF_AS_PATH __pb_into_os_string_view_%out_os_string, %path_buf
|
|
2429
|
+
EXPAND OS_STRING_FROM_STR %out_os_string, __pb_into_os_string_view_%out_os_string
|
|
2430
|
+
!__pb_into_os_string_view_%out_os_string
|
|
2431
|
+
[END_MACRO]
|
|
2432
|
+
|
|
2433
|
+
[MACRO] PATH_BUF_INTO_OS_STRING_MOVE %out_os_string, %path_buf
|
|
2434
|
+
EXPAND PATH_BUF_INTO_OS_STRING %out_os_string, %path_buf
|
|
2435
|
+
EXPAND PATH_BUF_FREE %path_buf
|
|
2436
|
+
[END_MACRO]
|
|
2437
|
+
|
|
2438
|
+
// PathBuf query/component aliases over PATH_BUF_AS_PATH + existing PATH_* helpers.
|
|
2439
|
+
|
|
2440
|
+
[MACRO] PATH_BUF_IS_ABSOLUTE %out_flag, %path_buf
|
|
2441
|
+
EXPAND PATH_BUF_AS_PATH __pb_is_abs_view_%out_flag, %path_buf
|
|
2442
|
+
EXPAND PATH_IS_ABSOLUTE %out_flag, __pb_is_abs_view_%out_flag
|
|
2443
|
+
!__pb_is_abs_view_%out_flag
|
|
2444
|
+
[END_MACRO]
|
|
2445
|
+
|
|
2446
|
+
[MACRO] PATH_BUF_IS_RELATIVE %out_flag, %path_buf
|
|
2447
|
+
EXPAND PATH_BUF_AS_PATH __pb_is_rel_view_%out_flag, %path_buf
|
|
2448
|
+
EXPAND PATH_IS_RELATIVE %out_flag, __pb_is_rel_view_%out_flag
|
|
2449
|
+
!__pb_is_rel_view_%out_flag
|
|
2450
|
+
[END_MACRO]
|
|
2451
|
+
|
|
2452
|
+
[MACRO] PATH_BUF_HAS_ROOT %out_flag, %path_buf
|
|
2453
|
+
EXPAND PATH_BUF_AS_PATH __pb_has_root_view_%out_flag, %path_buf
|
|
2454
|
+
EXPAND PATH_HAS_ROOT %out_flag, __pb_has_root_view_%out_flag
|
|
2455
|
+
!__pb_has_root_view_%out_flag
|
|
2456
|
+
[END_MACRO]
|
|
2457
|
+
|
|
2458
|
+
[MACRO] PATH_BUF_COMPONENT_COUNT %out_count, %path_buf
|
|
2459
|
+
EXPAND PATH_BUF_AS_PATH __pb_comp_count_view_%out_count, %path_buf
|
|
2460
|
+
EXPAND PATH_COMPONENT_COUNT %out_count, __pb_comp_count_view_%out_count
|
|
2461
|
+
!__pb_comp_count_view_%out_count
|
|
2462
|
+
[END_MACRO]
|
|
2463
|
+
|
|
2464
|
+
[MACRO] PATH_BUF_TRY_COMPONENT_AT %out_ok, %out_slice, %path_buf, %component_index
|
|
2465
|
+
EXPAND PATH_BUF_AS_PATH __pb_comp_at_view_%out_ok, %path_buf
|
|
2466
|
+
EXPAND PATH_TRY_COMPONENT_AT %out_ok, %out_slice, __pb_comp_at_view_%out_ok, %component_index
|
|
2467
|
+
!__pb_comp_at_view_%out_ok
|
|
2468
|
+
[END_MACRO]
|
|
2469
|
+
|
|
2470
|
+
[MACRO] PATH_BUF_ANCESTOR_COUNT %out_count, %path_buf
|
|
2471
|
+
EXPAND PATH_BUF_AS_PATH __pb_anc_count_view_%out_count, %path_buf
|
|
2472
|
+
EXPAND PATH_ANCESTOR_COUNT %out_count, __pb_anc_count_view_%out_count
|
|
2473
|
+
!__pb_anc_count_view_%out_count
|
|
2474
|
+
[END_MACRO]
|
|
2475
|
+
|
|
2476
|
+
[MACRO] PATH_BUF_TRY_ANCESTOR_AT %out_ok, %out_slice, %path_buf, %ancestor_index
|
|
2477
|
+
EXPAND PATH_BUF_AS_PATH __pb_anc_at_view_%out_ok, %path_buf
|
|
2478
|
+
EXPAND PATH_TRY_ANCESTOR_AT %out_ok, %out_slice, __pb_anc_at_view_%out_ok, %ancestor_index
|
|
2479
|
+
!__pb_anc_at_view_%out_ok
|
|
2480
|
+
[END_MACRO]
|
|
2481
|
+
|
|
2482
|
+
[MACRO] PATH_BUF_TRY_PARENT %out_ok, %out_slice, %path_buf
|
|
2483
|
+
EXPAND PATH_BUF_AS_PATH __pb_try_parent_view_%out_ok, %path_buf
|
|
2484
|
+
EXPAND PATH_TRY_PARENT %out_ok, %out_slice, __pb_try_parent_view_%out_ok
|
|
2485
|
+
!__pb_try_parent_view_%out_ok
|
|
2486
|
+
[END_MACRO]
|
|
2487
|
+
|
|
2488
|
+
[MACRO] PATH_BUF_TRY_FILE_NAME %out_ok, %out_slice, %path_buf
|
|
2489
|
+
EXPAND PATH_BUF_AS_PATH __pb_try_file_view_%out_ok, %path_buf
|
|
2490
|
+
EXPAND PATH_TRY_FILE_NAME %out_ok, %out_slice, __pb_try_file_view_%out_ok
|
|
2491
|
+
!__pb_try_file_view_%out_ok
|
|
2492
|
+
[END_MACRO]
|
|
2493
|
+
|
|
2494
|
+
[MACRO] PATH_BUF_TRY_FILE_STEM %out_ok, %out_slice, %path_buf
|
|
2495
|
+
EXPAND PATH_BUF_AS_PATH __pb_try_stem_view_%out_ok, %path_buf
|
|
2496
|
+
EXPAND PATH_TRY_FILE_STEM %out_ok, %out_slice, __pb_try_stem_view_%out_ok
|
|
2497
|
+
!__pb_try_stem_view_%out_ok
|
|
2498
|
+
[END_MACRO]
|
|
2499
|
+
|
|
2500
|
+
[MACRO] PATH_BUF_TRY_EXTENSION %out_ok, %out_slice, %path_buf
|
|
2501
|
+
EXPAND PATH_BUF_AS_PATH __pb_try_ext_view_%out_ok, %path_buf
|
|
2502
|
+
EXPAND PATH_TRY_EXTENSION %out_ok, %out_slice, __pb_try_ext_view_%out_ok
|
|
2503
|
+
!__pb_try_ext_view_%out_ok
|
|
2504
|
+
[END_MACRO]
|
|
2505
|
+
|
|
2506
|
+
// PathBuf-to-PathBuf push/join convenience over AS_PATH + PUSH.
|
|
2507
|
+
|
|
2508
|
+
[MACRO] PATH_BUF_PUSH_PATH_BUF %path_buf, %child_path_buf
|
|
2509
|
+
EXPAND PATH_BUF_AS_PATH __pb_push_pb_child_%path_buf, %child_path_buf
|
|
2510
|
+
EXPAND PATH_BUF_PUSH %path_buf, __pb_push_pb_child_%path_buf
|
|
2511
|
+
!__pb_push_pb_child_%path_buf
|
|
2512
|
+
[END_MACRO]
|
|
2513
|
+
|
|
2514
|
+
[MACRO] PATH_BUF_JOIN %path_buf, %child_slice
|
|
2515
|
+
EXPAND PATH_BUF_PUSH %path_buf, %child_slice
|
|
2516
|
+
[END_MACRO]
|
|
2517
|
+
|
|
2518
|
+
[MACRO] PATH_BUF_JOIN_PATH_BUF %path_buf, %child_path_buf
|
|
2519
|
+
EXPAND PATH_BUF_PUSH_PATH_BUF %path_buf, %child_path_buf
|
|
2520
|
+
[END_MACRO]
|
|
2521
|
+
|
|
2522
|
+
[MACRO] PATH_BUF_CLONE_FROM %dst_path_buf, %src_path_buf
|
|
2523
|
+
EXPAND STRING_BUF_CLONE_FROM %dst_path_buf, %src_path_buf
|
|
2524
|
+
[END_MACRO]
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
// PathBuf filesystem query/mutation aliases over AS_PATH + PATH_* helpers.
|
|
2528
|
+
|
|
2529
|
+
[MACRO] PATH_BUF_TRY_EXISTS %out_status, %out_flag, %path_buf
|
|
2530
|
+
EXPAND PATH_BUF_AS_PATH __pb_try_exists_view_%out_status, %path_buf
|
|
2531
|
+
EXPAND PATH_TRY_EXISTS %out_status, %out_flag, __pb_try_exists_view_%out_status
|
|
2532
|
+
!__pb_try_exists_view_%out_status
|
|
2533
|
+
[END_MACRO]
|
|
2534
|
+
|
|
2535
|
+
[MACRO] PATH_BUF_METADATA %out_status, %out_metadata, %path_buf
|
|
2536
|
+
EXPAND PATH_BUF_AS_PATH __pb_metadata_view_%out_status, %path_buf
|
|
2537
|
+
EXPAND PATH_METADATA %out_status, %out_metadata, __pb_metadata_view_%out_status
|
|
2538
|
+
!__pb_metadata_view_%out_status
|
|
2539
|
+
[END_MACRO]
|
|
2540
|
+
|
|
2541
|
+
[MACRO] PATH_BUF_CANONICALIZE %out_status, %out_buffer, %path_buf
|
|
2542
|
+
EXPAND PATH_BUF_AS_PATH __pb_canon_view_%out_status, %path_buf
|
|
2543
|
+
EXPAND PATH_CANONICALIZE %out_status, %out_buffer, __pb_canon_view_%out_status
|
|
2544
|
+
!__pb_canon_view_%out_status
|
|
2545
|
+
[END_MACRO]
|
|
2546
|
+
|
|
2547
|
+
[MACRO] PATH_BUF_READ_LINK %out_status, %out_buffer, %path_buf
|
|
2548
|
+
EXPAND PATH_BUF_AS_PATH __pb_read_link_view_%out_status, %path_buf
|
|
2549
|
+
EXPAND PATH_READ_LINK %out_status, %out_buffer, __pb_read_link_view_%out_status
|
|
2550
|
+
!__pb_read_link_view_%out_status
|
|
2551
|
+
[END_MACRO]
|
|
2552
|
+
|
|
2553
|
+
[MACRO] PATH_BUF_IS_SYMLINK %out_flag, %path_buf
|
|
2554
|
+
EXPAND PATH_BUF_AS_PATH __pb_is_symlink_view_%out_flag, %path_buf
|
|
2555
|
+
EXPAND PATH_IS_SYMLINK %out_flag, __pb_is_symlink_view_%out_flag
|
|
2556
|
+
!__pb_is_symlink_view_%out_flag
|
|
2557
|
+
[END_MACRO]
|
|
2558
|
+
|
|
2559
|
+
// Slice-path filesystem operation aliases over FS_* ptr/len helpers.
|
|
2560
|
+
|
|
2561
|
+
[MACRO] PATH_OPEN_READ %out_status, %out_file, %path_slice
|
|
2562
|
+
__path_open_read_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2563
|
+
__path_open_read_len_%out_status = load %path_slice+Slice_len as u64
|
|
2564
|
+
EXPAND FS_OPEN_READ %out_status, %out_file, __path_open_read_ptr_%out_status, __path_open_read_len_%out_status
|
|
2565
|
+
!__path_open_read_len_%out_status
|
|
2566
|
+
!__path_open_read_ptr_%out_status
|
|
2567
|
+
[END_MACRO]
|
|
2568
|
+
|
|
2569
|
+
[MACRO] PATH_OPEN_WRITE %out_status, %out_file, %path_slice, %truncate
|
|
2570
|
+
__path_open_write_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2571
|
+
__path_open_write_len_%out_status = load %path_slice+Slice_len as u64
|
|
2572
|
+
EXPAND FS_OPEN_WRITE %out_status, %out_file, __path_open_write_ptr_%out_status, __path_open_write_len_%out_status, %truncate
|
|
2573
|
+
!__path_open_write_len_%out_status
|
|
2574
|
+
!__path_open_write_ptr_%out_status
|
|
2575
|
+
[END_MACRO]
|
|
2576
|
+
|
|
2577
|
+
[MACRO] PATH_CREATE %out_status, %out_file, %path_slice
|
|
2578
|
+
__path_create_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2579
|
+
__path_create_len_%out_status = load %path_slice+Slice_len as u64
|
|
2580
|
+
EXPAND FS_CREATE %out_status, %out_file, __path_create_ptr_%out_status, __path_create_len_%out_status
|
|
2581
|
+
!__path_create_len_%out_status
|
|
2582
|
+
!__path_create_ptr_%out_status
|
|
2583
|
+
[END_MACRO]
|
|
2584
|
+
|
|
2585
|
+
[MACRO] PATH_READ_FILE %out_status, %out_buffer, %path_slice, %max_bytes
|
|
2586
|
+
__path_read_file_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2587
|
+
__path_read_file_len_%out_status = load %path_slice+Slice_len as u64
|
|
2588
|
+
EXPAND FS_READ_FILE %out_status, %out_buffer, __path_read_file_ptr_%out_status, __path_read_file_len_%out_status, %max_bytes
|
|
2589
|
+
!__path_read_file_len_%out_status
|
|
2590
|
+
!__path_read_file_ptr_%out_status
|
|
2591
|
+
[END_MACRO]
|
|
2592
|
+
|
|
2593
|
+
[MACRO] PATH_WRITE_FILE %out_status, %path_slice, %buf, %len
|
|
2594
|
+
__path_write_file_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2595
|
+
__path_write_file_len_%out_status = load %path_slice+Slice_len as u64
|
|
2596
|
+
EXPAND FS_WRITE_FILE %out_status, __path_write_file_ptr_%out_status, __path_write_file_len_%out_status, %buf, %len
|
|
2597
|
+
!__path_write_file_len_%out_status
|
|
2598
|
+
!__path_write_file_ptr_%out_status
|
|
2599
|
+
[END_MACRO]
|
|
2600
|
+
|
|
2601
|
+
[MACRO] PATH_REMOVE_FILE %out_status, %path_slice
|
|
2602
|
+
__path_remove_file_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2603
|
+
__path_remove_file_len_%out_status = load %path_slice+Slice_len as u64
|
|
2604
|
+
EXPAND FS_REMOVE_FILE %out_status, __path_remove_file_ptr_%out_status, __path_remove_file_len_%out_status
|
|
2605
|
+
!__path_remove_file_len_%out_status
|
|
2606
|
+
!__path_remove_file_ptr_%out_status
|
|
2607
|
+
[END_MACRO]
|
|
2608
|
+
|
|
2609
|
+
[MACRO] PATH_REMOVE_DIR %out_status, %path_slice
|
|
2610
|
+
__path_remove_dir_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2611
|
+
__path_remove_dir_len_%out_status = load %path_slice+Slice_len as u64
|
|
2612
|
+
EXPAND FS_REMOVE_DIR %out_status, __path_remove_dir_ptr_%out_status, __path_remove_dir_len_%out_status
|
|
2613
|
+
!__path_remove_dir_len_%out_status
|
|
2614
|
+
!__path_remove_dir_ptr_%out_status
|
|
2615
|
+
[END_MACRO]
|
|
2616
|
+
|
|
2617
|
+
[MACRO] PATH_CREATE_DIR %out_status, %path_slice
|
|
2618
|
+
__path_create_dir_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2619
|
+
__path_create_dir_len_%out_status = load %path_slice+Slice_len as u64
|
|
2620
|
+
EXPAND FS_CREATE_DIR %out_status, __path_create_dir_ptr_%out_status, __path_create_dir_len_%out_status
|
|
2621
|
+
!__path_create_dir_len_%out_status
|
|
2622
|
+
!__path_create_dir_ptr_%out_status
|
|
2623
|
+
[END_MACRO]
|
|
2624
|
+
|
|
2625
|
+
[MACRO] PATH_COPY %out_status, %from_slice, %to_slice
|
|
2626
|
+
__path_copy_from_ptr_%out_status = load %from_slice+Slice_ptr as ptr
|
|
2627
|
+
__path_copy_from_len_%out_status = load %from_slice+Slice_len as u64
|
|
2628
|
+
__path_copy_to_ptr_%out_status = load %to_slice+Slice_ptr as ptr
|
|
2629
|
+
__path_copy_to_len_%out_status = load %to_slice+Slice_len as u64
|
|
2630
|
+
EXPAND FS_COPY %out_status, __path_copy_from_ptr_%out_status, __path_copy_from_len_%out_status, __path_copy_to_ptr_%out_status, __path_copy_to_len_%out_status
|
|
2631
|
+
!__path_copy_to_len_%out_status
|
|
2632
|
+
!__path_copy_to_ptr_%out_status
|
|
2633
|
+
!__path_copy_from_len_%out_status
|
|
2634
|
+
!__path_copy_from_ptr_%out_status
|
|
2635
|
+
[END_MACRO]
|
|
2636
|
+
|
|
2637
|
+
// PathBuf filesystem operation aliases over AS_PATH + PATH_* helpers.
|
|
2638
|
+
|
|
2639
|
+
[MACRO] PATH_BUF_OPEN_READ %out_status, %out_file, %path_buf
|
|
2640
|
+
EXPAND PATH_BUF_AS_PATH __pb_open_read_view_%out_status, %path_buf
|
|
2641
|
+
EXPAND PATH_OPEN_READ %out_status, %out_file, __pb_open_read_view_%out_status
|
|
2642
|
+
!__pb_open_read_view_%out_status
|
|
2643
|
+
[END_MACRO]
|
|
2644
|
+
|
|
2645
|
+
[MACRO] PATH_BUF_OPEN_WRITE %out_status, %out_file, %path_buf, %truncate
|
|
2646
|
+
EXPAND PATH_BUF_AS_PATH __pb_open_write_view_%out_status, %path_buf
|
|
2647
|
+
EXPAND PATH_OPEN_WRITE %out_status, %out_file, __pb_open_write_view_%out_status, %truncate
|
|
2648
|
+
!__pb_open_write_view_%out_status
|
|
2649
|
+
[END_MACRO]
|
|
2650
|
+
|
|
2651
|
+
[MACRO] PATH_BUF_CREATE %out_status, %out_file, %path_buf
|
|
2652
|
+
EXPAND PATH_BUF_AS_PATH __pb_create_view_%out_status, %path_buf
|
|
2653
|
+
EXPAND PATH_CREATE %out_status, %out_file, __pb_create_view_%out_status
|
|
2654
|
+
!__pb_create_view_%out_status
|
|
2655
|
+
[END_MACRO]
|
|
2656
|
+
|
|
2657
|
+
[MACRO] PATH_BUF_READ_FILE %out_status, %out_buffer, %path_buf, %max_bytes
|
|
2658
|
+
EXPAND PATH_BUF_AS_PATH __pb_read_file_view_%out_status, %path_buf
|
|
2659
|
+
EXPAND PATH_READ_FILE %out_status, %out_buffer, __pb_read_file_view_%out_status, %max_bytes
|
|
2660
|
+
!__pb_read_file_view_%out_status
|
|
2661
|
+
[END_MACRO]
|
|
2662
|
+
|
|
2663
|
+
[MACRO] PATH_BUF_WRITE_FILE %out_status, %path_buf, %buf, %len
|
|
2664
|
+
EXPAND PATH_BUF_AS_PATH __pb_write_file_view_%out_status, %path_buf
|
|
2665
|
+
EXPAND PATH_WRITE_FILE %out_status, __pb_write_file_view_%out_status, %buf, %len
|
|
2666
|
+
!__pb_write_file_view_%out_status
|
|
2667
|
+
[END_MACRO]
|
|
2668
|
+
|
|
2669
|
+
[MACRO] PATH_BUF_REMOVE_FILE %out_status, %path_buf
|
|
2670
|
+
EXPAND PATH_BUF_AS_PATH __pb_remove_file_view_%out_status, %path_buf
|
|
2671
|
+
EXPAND PATH_REMOVE_FILE %out_status, __pb_remove_file_view_%out_status
|
|
2672
|
+
!__pb_remove_file_view_%out_status
|
|
2673
|
+
[END_MACRO]
|
|
2674
|
+
|
|
2675
|
+
[MACRO] PATH_BUF_CREATE_DIR %out_status, %path_buf
|
|
2676
|
+
EXPAND PATH_BUF_AS_PATH __pb_create_dir_view_%out_status, %path_buf
|
|
2677
|
+
EXPAND PATH_CREATE_DIR %out_status, __pb_create_dir_view_%out_status
|
|
2678
|
+
!__pb_create_dir_view_%out_status
|
|
2679
|
+
[END_MACRO]
|
|
2680
|
+
|
|
2681
|
+
[MACRO] PATH_BUF_REMOVE_DIR %out_status, %path_buf
|
|
2682
|
+
EXPAND PATH_BUF_AS_PATH __pb_remove_dir_view_%out_status, %path_buf
|
|
2683
|
+
EXPAND PATH_REMOVE_DIR %out_status, __pb_remove_dir_view_%out_status
|
|
2684
|
+
!__pb_remove_dir_view_%out_status
|
|
2685
|
+
[END_MACRO]
|
|
2686
|
+
|
|
2687
|
+
[MACRO] PATH_BUF_COPY %out_status, %from_path_buf, %to_path_buf
|
|
2688
|
+
EXPAND PATH_BUF_AS_PATH __pb_copy_from_view_%out_status, %from_path_buf
|
|
2689
|
+
EXPAND PATH_BUF_AS_PATH __pb_copy_to_view_%out_status, %to_path_buf
|
|
2690
|
+
EXPAND PATH_COPY %out_status, __pb_copy_from_view_%out_status, __pb_copy_to_view_%out_status
|
|
2691
|
+
!__pb_copy_to_view_%out_status
|
|
2692
|
+
!__pb_copy_from_view_%out_status
|
|
2693
|
+
[END_MACRO]
|
|
2694
|
+
|
|
2695
|
+
// Additional Path filesystem operation aliases over FS_* helpers.
|
|
2696
|
+
|
|
2697
|
+
[MACRO] PATH_READ_TO_STRING %out_status, %out_buffer, %path_slice, %max_bytes
|
|
2698
|
+
__path_read_to_string_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2699
|
+
__path_read_to_string_len_%out_status = load %path_slice+Slice_len as u64
|
|
2700
|
+
EXPAND FS_READ_TO_STRING %out_status, %out_buffer, __path_read_to_string_ptr_%out_status, __path_read_to_string_len_%out_status, %max_bytes
|
|
2701
|
+
!__path_read_to_string_len_%out_status
|
|
2702
|
+
!__path_read_to_string_ptr_%out_status
|
|
2703
|
+
[END_MACRO]
|
|
2704
|
+
|
|
2705
|
+
[MACRO] PATH_CREATE_DIR_ALL %out_status, %path_slice
|
|
2706
|
+
__path_create_dir_all_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2707
|
+
__path_create_dir_all_len_%out_status = load %path_slice+Slice_len as u64
|
|
2708
|
+
EXPAND FS_CREATE_DIR_ALL %out_status, __path_create_dir_all_ptr_%out_status, __path_create_dir_all_len_%out_status
|
|
2709
|
+
!__path_create_dir_all_len_%out_status
|
|
2710
|
+
!__path_create_dir_all_ptr_%out_status
|
|
2711
|
+
[END_MACRO]
|
|
2712
|
+
|
|
2713
|
+
[MACRO] PATH_REMOVE_DIR_ALL %out_status, %path_slice
|
|
2714
|
+
__path_remove_dir_all_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2715
|
+
__path_remove_dir_all_len_%out_status = load %path_slice+Slice_len as u64
|
|
2716
|
+
EXPAND FS_REMOVE_DIR_ALL %out_status, __path_remove_dir_all_ptr_%out_status, __path_remove_dir_all_len_%out_status
|
|
2717
|
+
!__path_remove_dir_all_len_%out_status
|
|
2718
|
+
!__path_remove_dir_all_ptr_%out_status
|
|
2719
|
+
[END_MACRO]
|
|
2720
|
+
|
|
2721
|
+
[MACRO] PATH_RENAME %out_status, %from_slice, %to_slice
|
|
2722
|
+
__path_rename_from_ptr_%out_status = load %from_slice+Slice_ptr as ptr
|
|
2723
|
+
__path_rename_from_len_%out_status = load %from_slice+Slice_len as u64
|
|
2724
|
+
__path_rename_to_ptr_%out_status = load %to_slice+Slice_ptr as ptr
|
|
2725
|
+
__path_rename_to_len_%out_status = load %to_slice+Slice_len as u64
|
|
2726
|
+
EXPAND FS_RENAME %out_status, __path_rename_from_ptr_%out_status, __path_rename_from_len_%out_status, __path_rename_to_ptr_%out_status, __path_rename_to_len_%out_status
|
|
2727
|
+
!__path_rename_to_len_%out_status
|
|
2728
|
+
!__path_rename_to_ptr_%out_status
|
|
2729
|
+
!__path_rename_from_len_%out_status
|
|
2730
|
+
!__path_rename_from_ptr_%out_status
|
|
2731
|
+
[END_MACRO]
|
|
2732
|
+
|
|
2733
|
+
[MACRO] PATH_HARD_LINK %out_status, %from_slice, %to_slice
|
|
2734
|
+
__path_hard_link_from_ptr_%out_status = load %from_slice+Slice_ptr as ptr
|
|
2735
|
+
__path_hard_link_from_len_%out_status = load %from_slice+Slice_len as u64
|
|
2736
|
+
__path_hard_link_to_ptr_%out_status = load %to_slice+Slice_ptr as ptr
|
|
2737
|
+
__path_hard_link_to_len_%out_status = load %to_slice+Slice_len as u64
|
|
2738
|
+
EXPAND FS_HARD_LINK %out_status, __path_hard_link_from_ptr_%out_status, __path_hard_link_from_len_%out_status, __path_hard_link_to_ptr_%out_status, __path_hard_link_to_len_%out_status
|
|
2739
|
+
!__path_hard_link_to_len_%out_status
|
|
2740
|
+
!__path_hard_link_to_ptr_%out_status
|
|
2741
|
+
!__path_hard_link_from_len_%out_status
|
|
2742
|
+
!__path_hard_link_from_ptr_%out_status
|
|
2743
|
+
[END_MACRO]
|
|
2744
|
+
|
|
2745
|
+
[MACRO] PATH_SYMLINK %out_status, %target_slice, %link_slice
|
|
2746
|
+
__path_symlink_target_ptr_%out_status = load %target_slice+Slice_ptr as ptr
|
|
2747
|
+
__path_symlink_target_len_%out_status = load %target_slice+Slice_len as u64
|
|
2748
|
+
__path_symlink_link_ptr_%out_status = load %link_slice+Slice_ptr as ptr
|
|
2749
|
+
__path_symlink_link_len_%out_status = load %link_slice+Slice_len as u64
|
|
2750
|
+
EXPAND FS_SYMLINK %out_status, __path_symlink_target_ptr_%out_status, __path_symlink_target_len_%out_status, __path_symlink_link_ptr_%out_status, __path_symlink_link_len_%out_status
|
|
2751
|
+
!__path_symlink_link_len_%out_status
|
|
2752
|
+
!__path_symlink_link_ptr_%out_status
|
|
2753
|
+
!__path_symlink_target_len_%out_status
|
|
2754
|
+
!__path_symlink_target_ptr_%out_status
|
|
2755
|
+
[END_MACRO]
|
|
2756
|
+
|
|
2757
|
+
[MACRO] PATH_SET_PERMISSIONS %out_status, %path_slice, %mode
|
|
2758
|
+
__path_set_perm_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2759
|
+
__path_set_perm_len_%out_status = load %path_slice+Slice_len as u64
|
|
2760
|
+
EXPAND FS_SET_PERMISSIONS %out_status, __path_set_perm_ptr_%out_status, __path_set_perm_len_%out_status, %mode
|
|
2761
|
+
!__path_set_perm_len_%out_status
|
|
2762
|
+
!__path_set_perm_ptr_%out_status
|
|
2763
|
+
[END_MACRO]
|
|
2764
|
+
|
|
2765
|
+
[MACRO] PATH_SET_TIMES_MS %out_status, %path_slice, %accessed_ms, %modified_ms
|
|
2766
|
+
__path_set_times_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2767
|
+
__path_set_times_len_%out_status = load %path_slice+Slice_len as u64
|
|
2768
|
+
EXPAND FS_SET_TIMES_MS %out_status, __path_set_times_ptr_%out_status, __path_set_times_len_%out_status, %accessed_ms, %modified_ms
|
|
2769
|
+
!__path_set_times_len_%out_status
|
|
2770
|
+
!__path_set_times_ptr_%out_status
|
|
2771
|
+
[END_MACRO]
|
|
2772
|
+
|
|
2773
|
+
// PathBuf wrappers for the additional Path filesystem operations.
|
|
2774
|
+
|
|
2775
|
+
[MACRO] PATH_BUF_READ_TO_STRING %out_status, %out_buffer, %path_buf, %max_bytes
|
|
2776
|
+
EXPAND PATH_BUF_AS_PATH __pb_read_to_string_view_%out_status, %path_buf
|
|
2777
|
+
EXPAND PATH_READ_TO_STRING %out_status, %out_buffer, __pb_read_to_string_view_%out_status, %max_bytes
|
|
2778
|
+
!__pb_read_to_string_view_%out_status
|
|
2779
|
+
[END_MACRO]
|
|
2780
|
+
|
|
2781
|
+
[MACRO] PATH_BUF_CREATE_DIR_ALL %out_status, %path_buf
|
|
2782
|
+
EXPAND PATH_BUF_AS_PATH __pb_create_dir_all_view_%out_status, %path_buf
|
|
2783
|
+
EXPAND PATH_CREATE_DIR_ALL %out_status, __pb_create_dir_all_view_%out_status
|
|
2784
|
+
!__pb_create_dir_all_view_%out_status
|
|
2785
|
+
[END_MACRO]
|
|
2786
|
+
|
|
2787
|
+
[MACRO] PATH_BUF_REMOVE_DIR_ALL %out_status, %path_buf
|
|
2788
|
+
EXPAND PATH_BUF_AS_PATH __pb_remove_dir_all_view_%out_status, %path_buf
|
|
2789
|
+
EXPAND PATH_REMOVE_DIR_ALL %out_status, __pb_remove_dir_all_view_%out_status
|
|
2790
|
+
!__pb_remove_dir_all_view_%out_status
|
|
2791
|
+
[END_MACRO]
|
|
2792
|
+
|
|
2793
|
+
[MACRO] PATH_BUF_RENAME %out_status, %from_path_buf, %to_path_buf
|
|
2794
|
+
EXPAND PATH_BUF_AS_PATH __pb_rename_from_view_%out_status, %from_path_buf
|
|
2795
|
+
EXPAND PATH_BUF_AS_PATH __pb_rename_to_view_%out_status, %to_path_buf
|
|
2796
|
+
EXPAND PATH_RENAME %out_status, __pb_rename_from_view_%out_status, __pb_rename_to_view_%out_status
|
|
2797
|
+
!__pb_rename_to_view_%out_status
|
|
2798
|
+
!__pb_rename_from_view_%out_status
|
|
2799
|
+
[END_MACRO]
|
|
2800
|
+
|
|
2801
|
+
[MACRO] PATH_BUF_HARD_LINK %out_status, %from_path_buf, %to_path_buf
|
|
2802
|
+
EXPAND PATH_BUF_AS_PATH __pb_hard_link_from_view_%out_status, %from_path_buf
|
|
2803
|
+
EXPAND PATH_BUF_AS_PATH __pb_hard_link_to_view_%out_status, %to_path_buf
|
|
2804
|
+
EXPAND PATH_HARD_LINK %out_status, __pb_hard_link_from_view_%out_status, __pb_hard_link_to_view_%out_status
|
|
2805
|
+
!__pb_hard_link_to_view_%out_status
|
|
2806
|
+
!__pb_hard_link_from_view_%out_status
|
|
2807
|
+
[END_MACRO]
|
|
2808
|
+
|
|
2809
|
+
[MACRO] PATH_BUF_SYMLINK %out_status, %target_path_buf, %link_path_buf
|
|
2810
|
+
EXPAND PATH_BUF_AS_PATH __pb_symlink_target_view_%out_status, %target_path_buf
|
|
2811
|
+
EXPAND PATH_BUF_AS_PATH __pb_symlink_link_view_%out_status, %link_path_buf
|
|
2812
|
+
EXPAND PATH_SYMLINK %out_status, __pb_symlink_target_view_%out_status, __pb_symlink_link_view_%out_status
|
|
2813
|
+
!__pb_symlink_link_view_%out_status
|
|
2814
|
+
!__pb_symlink_target_view_%out_status
|
|
2815
|
+
[END_MACRO]
|
|
2816
|
+
|
|
2817
|
+
[MACRO] PATH_BUF_SET_PERMISSIONS %out_status, %path_buf, %mode
|
|
2818
|
+
EXPAND PATH_BUF_AS_PATH __pb_set_perm_view_%out_status, %path_buf
|
|
2819
|
+
EXPAND PATH_SET_PERMISSIONS %out_status, __pb_set_perm_view_%out_status, %mode
|
|
2820
|
+
!__pb_set_perm_view_%out_status
|
|
2821
|
+
[END_MACRO]
|
|
2822
|
+
|
|
2823
|
+
[MACRO] PATH_BUF_SET_TIMES_MS %out_status, %path_buf, %accessed_ms, %modified_ms
|
|
2824
|
+
EXPAND PATH_BUF_AS_PATH __pb_set_times_view_%out_status, %path_buf
|
|
2825
|
+
EXPAND PATH_SET_TIMES_MS %out_status, __pb_set_times_view_%out_status, %accessed_ms, %modified_ms
|
|
2826
|
+
!__pb_set_times_view_%out_status
|
|
2827
|
+
[END_MACRO]
|
|
2828
|
+
|
|
2829
|
+
// Path directory listing aliases over FS_READ_DIR_* helpers.
|
|
2830
|
+
|
|
2831
|
+
[MACRO] PATH_READ_DIR_JSON %out_status, %out_buffer, %path_slice, %max_entries
|
|
2832
|
+
__path_read_dir_json_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2833
|
+
__path_read_dir_json_len_%out_status = load %path_slice+Slice_len as u64
|
|
2834
|
+
EXPAND FS_READ_DIR_JSON %out_status, %out_buffer, __path_read_dir_json_ptr_%out_status, __path_read_dir_json_len_%out_status, %max_entries
|
|
2835
|
+
!__path_read_dir_json_len_%out_status
|
|
2836
|
+
!__path_read_dir_json_ptr_%out_status
|
|
2837
|
+
[END_MACRO]
|
|
2838
|
+
|
|
2839
|
+
[MACRO] PATH_READ_DIR_ENTRIES %out_status, %out_entries, %path_slice, %max_entries
|
|
2840
|
+
__path_read_dir_entries_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2841
|
+
__path_read_dir_entries_len_%out_status = load %path_slice+Slice_len as u64
|
|
2842
|
+
EXPAND FS_READ_DIR_ENTRIES %out_status, %out_entries, __path_read_dir_entries_ptr_%out_status, __path_read_dir_entries_len_%out_status, %max_entries
|
|
2843
|
+
!__path_read_dir_entries_len_%out_status
|
|
2844
|
+
!__path_read_dir_entries_ptr_%out_status
|
|
2845
|
+
[END_MACRO]
|
|
2846
|
+
|
|
2847
|
+
[MACRO] PATH_BUF_READ_DIR_JSON %out_status, %out_buffer, %path_buf, %max_entries
|
|
2848
|
+
EXPAND PATH_BUF_AS_PATH __pb_read_dir_json_view_%out_status, %path_buf
|
|
2849
|
+
EXPAND PATH_READ_DIR_JSON %out_status, %out_buffer, __pb_read_dir_json_view_%out_status, %max_entries
|
|
2850
|
+
!__pb_read_dir_json_view_%out_status
|
|
2851
|
+
[END_MACRO]
|
|
2852
|
+
|
|
2853
|
+
[MACRO] PATH_BUF_READ_DIR_ENTRIES %out_status, %out_entries, %path_buf, %max_entries
|
|
2854
|
+
EXPAND PATH_BUF_AS_PATH __pb_read_dir_entries_view_%out_status, %path_buf
|
|
2855
|
+
EXPAND PATH_READ_DIR_ENTRIES %out_status, %out_entries, __pb_read_dir_entries_view_%out_status, %max_entries
|
|
2856
|
+
!__pb_read_dir_entries_view_%out_status
|
|
2857
|
+
[END_MACRO]
|
|
2858
|
+
|
|
2859
|
+
// Path slice facades over FS DirBuilder / OpenOptions SSA builders.
|
|
2860
|
+
|
|
2861
|
+
[MACRO] PATH_DIR_BUILDER_CREATE %out_status, %recursive, %mode, %path_slice
|
|
2862
|
+
__path_dir_builder_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2863
|
+
__path_dir_builder_len_%out_status = load %path_slice+Slice_len as u64
|
|
2864
|
+
EXPAND FS_DIR_BUILDER_CREATE %out_status, %recursive, %mode, __path_dir_builder_ptr_%out_status, __path_dir_builder_len_%out_status
|
|
2865
|
+
!__path_dir_builder_len_%out_status
|
|
2866
|
+
!__path_dir_builder_ptr_%out_status
|
|
2867
|
+
[END_MACRO]
|
|
2868
|
+
|
|
2869
|
+
[MACRO] PATH_OPEN_OPTIONS_BUILDER_OPEN %out_status, %out_file, %flags, %mode, %custom, %path_slice
|
|
2870
|
+
__path_oob_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2871
|
+
__path_oob_len_%out_status = load %path_slice+Slice_len as u64
|
|
2872
|
+
EXPAND FS_OPEN_OPTIONS_BUILDER_OPEN %out_status, %out_file, %flags, %mode, %custom, __path_oob_ptr_%out_status, __path_oob_len_%out_status
|
|
2873
|
+
!__path_oob_len_%out_status
|
|
2874
|
+
!__path_oob_ptr_%out_status
|
|
2875
|
+
[END_MACRO]
|
|
2876
|
+
|
|
2877
|
+
[MACRO] PATH_BUF_DIR_BUILDER_CREATE %out_status, %recursive, %mode, %path_buf
|
|
2878
|
+
EXPAND PATH_BUF_AS_PATH __pb_dir_builder_view_%out_status, %path_buf
|
|
2879
|
+
EXPAND PATH_DIR_BUILDER_CREATE %out_status, %recursive, %mode, __pb_dir_builder_view_%out_status
|
|
2880
|
+
!__pb_dir_builder_view_%out_status
|
|
2881
|
+
[END_MACRO]
|
|
2882
|
+
|
|
2883
|
+
[MACRO] PATH_BUF_OPEN_OPTIONS_BUILDER_OPEN %out_status, %out_file, %flags, %mode, %custom, %path_buf
|
|
2884
|
+
EXPAND PATH_BUF_AS_PATH __pb_oob_view_%out_status, %path_buf
|
|
2885
|
+
EXPAND PATH_OPEN_OPTIONS_BUILDER_OPEN %out_status, %out_file, %flags, %mode, %custom, __pb_oob_view_%out_status
|
|
2886
|
+
!__pb_oob_view_%out_status
|
|
2887
|
+
[END_MACRO]
|
|
2888
|
+
|
|
2889
|
+
// Path slice facades over FS permissions-object and FileTimes helpers.
|
|
2890
|
+
|
|
2891
|
+
[MACRO] PATH_SET_PERMISSIONS_OBJ %out_status, %path_slice, %permissions
|
|
2892
|
+
__path_set_perm_obj_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2893
|
+
__path_set_perm_obj_len_%out_status = load %path_slice+Slice_len as u64
|
|
2894
|
+
EXPAND FS_SET_PERMISSIONS_OBJ %out_status, __path_set_perm_obj_ptr_%out_status, __path_set_perm_obj_len_%out_status, %permissions
|
|
2895
|
+
!__path_set_perm_obj_len_%out_status
|
|
2896
|
+
!__path_set_perm_obj_ptr_%out_status
|
|
2897
|
+
[END_MACRO]
|
|
2898
|
+
|
|
2899
|
+
[MACRO] PATH_FILE_TIMES_SET %out_status, %path_slice, %accessed_ms, %modified_ms
|
|
2900
|
+
__path_file_times_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2901
|
+
__path_file_times_len_%out_status = load %path_slice+Slice_len as u64
|
|
2902
|
+
EXPAND FS_FILE_TIMES_SET %out_status, __path_file_times_ptr_%out_status, __path_file_times_len_%out_status, %accessed_ms, %modified_ms
|
|
2903
|
+
!__path_file_times_len_%out_status
|
|
2904
|
+
!__path_file_times_ptr_%out_status
|
|
2905
|
+
[END_MACRO]
|
|
2906
|
+
|
|
2907
|
+
[MACRO] PATH_BUF_SET_PERMISSIONS_OBJ %out_status, %path_buf, %permissions
|
|
2908
|
+
EXPAND PATH_BUF_AS_PATH __pb_set_perm_obj_view_%out_status, %path_buf
|
|
2909
|
+
EXPAND PATH_SET_PERMISSIONS_OBJ %out_status, __pb_set_perm_obj_view_%out_status, %permissions
|
|
2910
|
+
!__pb_set_perm_obj_view_%out_status
|
|
2911
|
+
[END_MACRO]
|
|
2912
|
+
|
|
2913
|
+
[MACRO] PATH_BUF_FILE_TIMES_SET %out_status, %path_buf, %accessed_ms, %modified_ms
|
|
2914
|
+
EXPAND PATH_BUF_AS_PATH __pb_file_times_view_%out_status, %path_buf
|
|
2915
|
+
EXPAND PATH_FILE_TIMES_SET %out_status, __pb_file_times_view_%out_status, %accessed_ms, %modified_ms
|
|
2916
|
+
!__pb_file_times_view_%out_status
|
|
2917
|
+
[END_MACRO]
|
|
2918
|
+
|
|
2919
|
+
// batch path wrappers g1
|
|
2920
|
+
[MACRO] PATH_METADATA_JSON %out_status, %out_buffer, %path_slice
|
|
2921
|
+
__path_metadata_json_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2922
|
+
__path_metadata_json_len_%out_status = load %path_slice+Slice_len as u64
|
|
2923
|
+
EXPAND FS_METADATA_JSON %out_status, %out_buffer, __path_metadata_json_ptr_%out_status, __path_metadata_json_len_%out_status
|
|
2924
|
+
!__path_metadata_json_len_%out_status
|
|
2925
|
+
!__path_metadata_json_ptr_%out_status
|
|
2926
|
+
[END_MACRO]
|
|
2927
|
+
|
|
2928
|
+
[MACRO] PATH_BUF_METADATA_JSON %out_status, %out_buffer, %path_buf
|
|
2929
|
+
EXPAND PATH_BUF_AS_PATH __pb_metadata_json_view_%out_status, %path_buf
|
|
2930
|
+
EXPAND PATH_METADATA_JSON %out_status, %out_buffer, __pb_metadata_json_view_%out_status
|
|
2931
|
+
!__pb_metadata_json_view_%out_status
|
|
2932
|
+
[END_MACRO]
|
|
2933
|
+
|
|
2934
|
+
// Path slice facades over FS file-len / remove / create-dir-mode helpers.
|
|
2935
|
+
|
|
2936
|
+
[MACRO] PATH_FS_SIZE %out_status, %out_len, %path_slice
|
|
2937
|
+
__path_file_len_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2938
|
+
__path_file_len_len_%out_status = load %path_slice+Slice_len as u64
|
|
2939
|
+
EXPAND FS_LEN %out_status, %out_len, __path_file_len_ptr_%out_status, __path_file_len_len_%out_status
|
|
2940
|
+
!__path_file_len_len_%out_status
|
|
2941
|
+
!__path_file_len_ptr_%out_status
|
|
2942
|
+
[END_MACRO]
|
|
2943
|
+
|
|
2944
|
+
[MACRO] PATH_REMOVE_ENTRY %out_status, %path_slice
|
|
2945
|
+
__path_remove_entry_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2946
|
+
__path_remove_entry_len_%out_status = load %path_slice+Slice_len as u64
|
|
2947
|
+
EXPAND FS_REMOVE %out_status, __path_remove_entry_ptr_%out_status, __path_remove_entry_len_%out_status
|
|
2948
|
+
!__path_remove_entry_len_%out_status
|
|
2949
|
+
!__path_remove_entry_ptr_%out_status
|
|
2950
|
+
[END_MACRO]
|
|
2951
|
+
|
|
2952
|
+
[MACRO] PATH_REMOVE_ANY %out_status, %path_slice
|
|
2953
|
+
__path_remove_any_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2954
|
+
__path_remove_any_len_%out_status = load %path_slice+Slice_len as u64
|
|
2955
|
+
EXPAND FS_REMOVE_PATH %out_status, __path_remove_any_ptr_%out_status, __path_remove_any_len_%out_status
|
|
2956
|
+
!__path_remove_any_len_%out_status
|
|
2957
|
+
!__path_remove_any_ptr_%out_status
|
|
2958
|
+
[END_MACRO]
|
|
2959
|
+
|
|
2960
|
+
[MACRO] PATH_CREATE_DIR_WITH_MODE %out_status, %path_slice, %mode
|
|
2961
|
+
__path_create_dir_mode_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2962
|
+
__path_create_dir_mode_len_%out_status = load %path_slice+Slice_len as u64
|
|
2963
|
+
EXPAND FS_CREATE_DIR_MODE %out_status, __path_create_dir_mode_ptr_%out_status, __path_create_dir_mode_len_%out_status, %mode
|
|
2964
|
+
!__path_create_dir_mode_len_%out_status
|
|
2965
|
+
!__path_create_dir_mode_ptr_%out_status
|
|
2966
|
+
[END_MACRO]
|
|
2967
|
+
|
|
2968
|
+
[MACRO] PATH_CREATE_DIR_ALL_WITH_MODE %out_status, %path_slice, %mode
|
|
2969
|
+
__path_create_dir_all_mode_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
2970
|
+
__path_create_dir_all_mode_len_%out_status = load %path_slice+Slice_len as u64
|
|
2971
|
+
EXPAND FS_CREATE_DIR_ALL_MODE %out_status, __path_create_dir_all_mode_ptr_%out_status, __path_create_dir_all_mode_len_%out_status, %mode
|
|
2972
|
+
!__path_create_dir_all_mode_len_%out_status
|
|
2973
|
+
!__path_create_dir_all_mode_ptr_%out_status
|
|
2974
|
+
[END_MACRO]
|
|
2975
|
+
|
|
2976
|
+
[MACRO] PATH_BUF_FS_SIZE %out_status, %out_len, %path_buf
|
|
2977
|
+
EXPAND PATH_BUF_AS_PATH __pb_file_len_view_%out_status, %path_buf
|
|
2978
|
+
EXPAND PATH_FS_SIZE %out_status, %out_len, __pb_file_len_view_%out_status
|
|
2979
|
+
!__pb_file_len_view_%out_status
|
|
2980
|
+
[END_MACRO]
|
|
2981
|
+
|
|
2982
|
+
[MACRO] PATH_BUF_REMOVE_ENTRY %out_status, %path_buf
|
|
2983
|
+
EXPAND PATH_BUF_AS_PATH __pb_remove_entry_view_%out_status, %path_buf
|
|
2984
|
+
EXPAND PATH_REMOVE_ENTRY %out_status, __pb_remove_entry_view_%out_status
|
|
2985
|
+
!__pb_remove_entry_view_%out_status
|
|
2986
|
+
[END_MACRO]
|
|
2987
|
+
|
|
2988
|
+
[MACRO] PATH_BUF_REMOVE_ANY %out_status, %path_buf
|
|
2989
|
+
EXPAND PATH_BUF_AS_PATH __pb_remove_any_view_%out_status, %path_buf
|
|
2990
|
+
EXPAND PATH_REMOVE_ANY %out_status, __pb_remove_any_view_%out_status
|
|
2991
|
+
!__pb_remove_any_view_%out_status
|
|
2992
|
+
[END_MACRO]
|
|
2993
|
+
|
|
2994
|
+
[MACRO] PATH_BUF_CREATE_DIR_WITH_MODE %out_status, %path_buf, %mode
|
|
2995
|
+
EXPAND PATH_BUF_AS_PATH __pb_create_dir_mode_view_%out_status, %path_buf
|
|
2996
|
+
EXPAND PATH_CREATE_DIR_WITH_MODE %out_status, __pb_create_dir_mode_view_%out_status, %mode
|
|
2997
|
+
!__pb_create_dir_mode_view_%out_status
|
|
2998
|
+
[END_MACRO]
|
|
2999
|
+
|
|
3000
|
+
[MACRO] PATH_BUF_CREATE_DIR_ALL_WITH_MODE %out_status, %path_buf, %mode
|
|
3001
|
+
EXPAND PATH_BUF_AS_PATH __pb_create_dir_all_mode_view_%out_status, %path_buf
|
|
3002
|
+
EXPAND PATH_CREATE_DIR_ALL_WITH_MODE %out_status, __pb_create_dir_all_mode_view_%out_status, %mode
|
|
3003
|
+
!__pb_create_dir_all_mode_view_%out_status
|
|
3004
|
+
[END_MACRO]
|
|
3005
|
+
|
|
3006
|
+
|
|
3007
|
+
// Path slice facades over FS open-flags/options and base64 file helpers.
|
|
3008
|
+
|
|
3009
|
+
[MACRO] PATH_OPEN_FLAGS %out_status, %out_file, %path_slice, %flags
|
|
3010
|
+
__path_open_flags_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3011
|
+
__path_open_flags_len_%out_status = load %path_slice+Slice_len as u64
|
|
3012
|
+
EXPAND FS_OPEN_FLAGS %out_status, %out_file, __path_open_flags_ptr_%out_status, __path_open_flags_len_%out_status, %flags
|
|
3013
|
+
!__path_open_flags_len_%out_status
|
|
3014
|
+
!__path_open_flags_ptr_%out_status
|
|
3015
|
+
[END_MACRO]
|
|
3016
|
+
|
|
3017
|
+
[MACRO] PATH_OPEN_WITH_OPTIONS %out_status, %out_file, %path_slice, %flags, %create_mode, %custom_flags
|
|
3018
|
+
__path_open_with_opts_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3019
|
+
__path_open_with_opts_len_%out_status = load %path_slice+Slice_len as u64
|
|
3020
|
+
EXPAND FS_OPEN_OPTIONS %out_status, %out_file, __path_open_with_opts_ptr_%out_status, __path_open_with_opts_len_%out_status, %flags, %create_mode, %custom_flags
|
|
3021
|
+
!__path_open_with_opts_len_%out_status
|
|
3022
|
+
!__path_open_with_opts_ptr_%out_status
|
|
3023
|
+
[END_MACRO]
|
|
3024
|
+
|
|
3025
|
+
[MACRO] PATH_READ_FILE_BASE64 %out_status, %out_buffer, %path_slice, %max_bytes
|
|
3026
|
+
__path_read_b64_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3027
|
+
__path_read_b64_len_%out_status = load %path_slice+Slice_len as u64
|
|
3028
|
+
EXPAND FS_READ_FILE_BASE64 %out_status, %out_buffer, __path_read_b64_ptr_%out_status, __path_read_b64_len_%out_status, %max_bytes
|
|
3029
|
+
!__path_read_b64_len_%out_status
|
|
3030
|
+
!__path_read_b64_ptr_%out_status
|
|
3031
|
+
[END_MACRO]
|
|
3032
|
+
|
|
3033
|
+
[MACRO] PATH_WRITE_FILE_BASE64 %out_status, %path_slice, %buf, %len
|
|
3034
|
+
__path_write_b64_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3035
|
+
__path_write_b64_len_%out_status = load %path_slice+Slice_len as u64
|
|
3036
|
+
EXPAND FS_WRITE_FILE_BASE64 %out_status, __path_write_b64_ptr_%out_status, __path_write_b64_len_%out_status, %buf, %len
|
|
3037
|
+
!__path_write_b64_len_%out_status
|
|
3038
|
+
!__path_write_b64_ptr_%out_status
|
|
3039
|
+
[END_MACRO]
|
|
3040
|
+
|
|
3041
|
+
[MACRO] PATH_BUF_OPEN_FLAGS %out_status, %out_file, %path_buf, %flags
|
|
3042
|
+
EXPAND PATH_BUF_AS_PATH __pb_open_flags_view_%out_status, %path_buf
|
|
3043
|
+
EXPAND PATH_OPEN_FLAGS %out_status, %out_file, __pb_open_flags_view_%out_status, %flags
|
|
3044
|
+
!__pb_open_flags_view_%out_status
|
|
3045
|
+
[END_MACRO]
|
|
3046
|
+
|
|
3047
|
+
[MACRO] PATH_BUF_OPEN_WITH_OPTIONS %out_status, %out_file, %path_buf, %flags, %create_mode, %custom_flags
|
|
3048
|
+
EXPAND PATH_BUF_AS_PATH __pb_open_with_opts_view_%out_status, %path_buf
|
|
3049
|
+
EXPAND PATH_OPEN_WITH_OPTIONS %out_status, %out_file, __pb_open_with_opts_view_%out_status, %flags, %create_mode, %custom_flags
|
|
3050
|
+
!__pb_open_with_opts_view_%out_status
|
|
3051
|
+
[END_MACRO]
|
|
3052
|
+
|
|
3053
|
+
[MACRO] PATH_BUF_READ_FILE_BASE64 %out_status, %out_buffer, %path_buf, %max_bytes
|
|
3054
|
+
EXPAND PATH_BUF_AS_PATH __pb_read_b64_view_%out_status, %path_buf
|
|
3055
|
+
EXPAND PATH_READ_FILE_BASE64 %out_status, %out_buffer, __pb_read_b64_view_%out_status, %max_bytes
|
|
3056
|
+
!__pb_read_b64_view_%out_status
|
|
3057
|
+
[END_MACRO]
|
|
3058
|
+
|
|
3059
|
+
[MACRO] PATH_BUF_WRITE_FILE_BASE64 %out_status, %path_buf, %buf, %len
|
|
3060
|
+
EXPAND PATH_BUF_AS_PATH __pb_write_b64_view_%out_status, %path_buf
|
|
3061
|
+
EXPAND PATH_WRITE_FILE_BASE64 %out_status, __pb_write_b64_view_%out_status, %buf, %len
|
|
3062
|
+
!__pb_write_b64_view_%out_status
|
|
3063
|
+
[END_MACRO]
|
|
3064
|
+
|
|
3065
|
+
|
|
3066
|
+
// Path slice facades over FS unix ownership / chroot / mkfifo helpers.
|
|
3067
|
+
|
|
3068
|
+
[MACRO] PATH_CHOWN %out_status, %path_slice, %uid, %gid, %has_uid, %has_gid
|
|
3069
|
+
__path_chown_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3070
|
+
__path_chown_len_%out_status = load %path_slice+Slice_len as u64
|
|
3071
|
+
EXPAND FS_UNIX_CHOWN %out_status, __path_chown_ptr_%out_status, __path_chown_len_%out_status, %uid, %gid, %has_uid, %has_gid
|
|
3072
|
+
!__path_chown_len_%out_status
|
|
3073
|
+
!__path_chown_ptr_%out_status
|
|
3074
|
+
[END_MACRO]
|
|
3075
|
+
|
|
3076
|
+
[MACRO] PATH_LCHOWN %out_status, %path_slice, %uid, %gid, %has_uid, %has_gid
|
|
3077
|
+
__path_lchown_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3078
|
+
__path_lchown_len_%out_status = load %path_slice+Slice_len as u64
|
|
3079
|
+
EXPAND FS_UNIX_LCHOWN %out_status, __path_lchown_ptr_%out_status, __path_lchown_len_%out_status, %uid, %gid, %has_uid, %has_gid
|
|
3080
|
+
!__path_lchown_len_%out_status
|
|
3081
|
+
!__path_lchown_ptr_%out_status
|
|
3082
|
+
[END_MACRO]
|
|
3083
|
+
|
|
3084
|
+
[MACRO] PATH_CHROOT %out_status, %path_slice
|
|
3085
|
+
__path_chroot_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3086
|
+
__path_chroot_len_%out_status = load %path_slice+Slice_len as u64
|
|
3087
|
+
EXPAND FS_UNIX_CHROOT %out_status, __path_chroot_ptr_%out_status, __path_chroot_len_%out_status
|
|
3088
|
+
!__path_chroot_len_%out_status
|
|
3089
|
+
!__path_chroot_ptr_%out_status
|
|
3090
|
+
[END_MACRO]
|
|
3091
|
+
|
|
3092
|
+
[MACRO] PATH_MKFIFO %out_status, %path_slice, %mode
|
|
3093
|
+
__path_mkfifo_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3094
|
+
__path_mkfifo_len_%out_status = load %path_slice+Slice_len as u64
|
|
3095
|
+
EXPAND FS_UNIX_MKFIFO %out_status, __path_mkfifo_ptr_%out_status, __path_mkfifo_len_%out_status, %mode
|
|
3096
|
+
!__path_mkfifo_len_%out_status
|
|
3097
|
+
!__path_mkfifo_ptr_%out_status
|
|
3098
|
+
[END_MACRO]
|
|
3099
|
+
|
|
3100
|
+
[MACRO] PATH_MAKE_DIR %out_status, %path_slice
|
|
3101
|
+
__path_make_dir_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3102
|
+
__path_make_dir_len_%out_status = load %path_slice+Slice_len as u64
|
|
3103
|
+
EXPAND FS_MAKE_DIR %out_status, __path_make_dir_ptr_%out_status, __path_make_dir_len_%out_status
|
|
3104
|
+
!__path_make_dir_len_%out_status
|
|
3105
|
+
!__path_make_dir_ptr_%out_status
|
|
3106
|
+
[END_MACRO]
|
|
3107
|
+
|
|
3108
|
+
[MACRO] PATH_MAKE_DIR_WITH_MODE %out_status, %path_slice, %mode
|
|
3109
|
+
__path_make_dir_mode_ptr_%out_status = load %path_slice+Slice_ptr as ptr
|
|
3110
|
+
__path_make_dir_mode_len_%out_status = load %path_slice+Slice_len as u64
|
|
3111
|
+
EXPAND FS_MAKE_DIR_MODE %out_status, __path_make_dir_mode_ptr_%out_status, __path_make_dir_mode_len_%out_status, %mode
|
|
3112
|
+
!__path_make_dir_mode_len_%out_status
|
|
3113
|
+
!__path_make_dir_mode_ptr_%out_status
|
|
3114
|
+
[END_MACRO]
|
|
3115
|
+
|
|
3116
|
+
[MACRO] PATH_BUF_CHOWN %out_status, %path_buf, %uid, %gid, %has_uid, %has_gid
|
|
3117
|
+
EXPAND PATH_BUF_AS_PATH __pb_chown_view_%out_status, %path_buf
|
|
3118
|
+
EXPAND PATH_CHOWN %out_status, __pb_chown_view_%out_status, %uid, %gid, %has_uid, %has_gid
|
|
3119
|
+
!__pb_chown_view_%out_status
|
|
3120
|
+
[END_MACRO]
|
|
3121
|
+
|
|
3122
|
+
[MACRO] PATH_BUF_LCHOWN %out_status, %path_buf, %uid, %gid, %has_uid, %has_gid
|
|
3123
|
+
EXPAND PATH_BUF_AS_PATH __pb_lchown_view_%out_status, %path_buf
|
|
3124
|
+
EXPAND PATH_LCHOWN %out_status, __pb_lchown_view_%out_status, %uid, %gid, %has_uid, %has_gid
|
|
3125
|
+
!__pb_lchown_view_%out_status
|
|
3126
|
+
[END_MACRO]
|
|
3127
|
+
|
|
3128
|
+
[MACRO] PATH_BUF_CHROOT %out_status, %path_buf
|
|
3129
|
+
EXPAND PATH_BUF_AS_PATH __pb_chroot_view_%out_status, %path_buf
|
|
3130
|
+
EXPAND PATH_CHROOT %out_status, __pb_chroot_view_%out_status
|
|
3131
|
+
!__pb_chroot_view_%out_status
|
|
3132
|
+
[END_MACRO]
|
|
3133
|
+
|
|
3134
|
+
[MACRO] PATH_BUF_MKFIFO %out_status, %path_buf, %mode
|
|
3135
|
+
EXPAND PATH_BUF_AS_PATH __pb_mkfifo_view_%out_status, %path_buf
|
|
3136
|
+
EXPAND PATH_MKFIFO %out_status, __pb_mkfifo_view_%out_status, %mode
|
|
3137
|
+
!__pb_mkfifo_view_%out_status
|
|
3138
|
+
[END_MACRO]
|
|
3139
|
+
|
|
3140
|
+
[MACRO] PATH_BUF_MAKE_DIR %out_status, %path_buf
|
|
3141
|
+
EXPAND PATH_BUF_AS_PATH __pb_make_dir_view_%out_status, %path_buf
|
|
3142
|
+
EXPAND PATH_MAKE_DIR %out_status, __pb_make_dir_view_%out_status
|
|
3143
|
+
!__pb_make_dir_view_%out_status
|
|
3144
|
+
[END_MACRO]
|
|
3145
|
+
|
|
3146
|
+
[MACRO] PATH_BUF_MAKE_DIR_WITH_MODE %out_status, %path_buf, %mode
|
|
3147
|
+
EXPAND PATH_BUF_AS_PATH __pb_make_dir_mode_view_%out_status, %path_buf
|
|
3148
|
+
EXPAND PATH_MAKE_DIR_WITH_MODE %out_status, __pb_make_dir_mode_view_%out_status, %mode
|
|
3149
|
+
!__pb_make_dir_mode_view_%out_status
|
|
3150
|
+
[END_MACRO]
|
|
3151
|
+
|
|
3152
|
+
[MACRO] PATH_READ_FILE_BYTES %out_status, %out_buffer, %path_slice, %max_bytes
|
|
3153
|
+
EXPAND PATH_READ_FILE %out_status, %out_buffer, %path_slice, %max_bytes
|
|
3154
|
+
[END_MACRO]
|
|
3155
|
+
|
|
3156
|
+
[MACRO] PATH_WRITE_FILE_BYTES %out_status, %path_slice, %buf, %len
|
|
3157
|
+
EXPAND PATH_WRITE_FILE %out_status, %path_slice, %buf, %len
|
|
3158
|
+
[END_MACRO]
|
|
3159
|
+
|
|
3160
|
+
[MACRO] PATH_READ_TO_STRING_BYTES %out_status, %out_buffer, %path_slice, %max_bytes
|
|
3161
|
+
EXPAND PATH_READ_TO_STRING %out_status, %out_buffer, %path_slice, %max_bytes
|
|
3162
|
+
[END_MACRO]
|
|
3163
|
+
|
|
3164
|
+
[MACRO] PATH_BUF_READ_FILE_BYTES %out_status, %out_buffer, %path_buf, %max_bytes
|
|
3165
|
+
EXPAND PATH_BUF_READ_FILE %out_status, %out_buffer, %path_buf, %max_bytes
|
|
3166
|
+
[END_MACRO]
|
|
3167
|
+
|
|
3168
|
+
[MACRO] PATH_BUF_WRITE_FILE_BYTES %out_status, %path_buf, %buf, %len
|
|
3169
|
+
EXPAND PATH_BUF_WRITE_FILE %out_status, %path_buf, %buf, %len
|
|
3170
|
+
[END_MACRO]
|