@shd101wyy/yo 0.1.26 → 0.1.27
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/.github/skills/yo-async-effects/SKILL.md +4 -4
- package/.github/skills/yo-async-effects/async-effects-recipes.md +34 -34
- package/.github/skills/yo-core-patterns/SKILL.md +1 -1
- package/.github/skills/yo-core-patterns/core-patterns-cheatsheet.md +26 -26
- package/.github/skills/yo-project-workflow/SKILL.md +6 -3
- package/.github/skills/yo-project-workflow/workflow-cheatsheet.md +34 -11
- package/.github/skills/yo-syntax/SKILL.md +7 -6
- package/.github/skills/yo-syntax/syntax-cheatsheet.md +73 -60
- package/.github/skills/yo-wasm-integration/wasm-integration-cheatsheet.md +3 -3
- package/README.md +10 -8
- package/out/cjs/index.cjs +456 -438
- package/out/cjs/yo-cli.cjs +576 -543
- package/out/cjs/yo-lsp.cjs +559 -532
- package/out/esm/index.mjs +281 -263
- package/out/types/src/formatter.d.ts +11 -0
- package/out/types/src/lsp/formatting.d.ts +2 -0
- package/out/types/src/tests/formatter.test.d.ts +1 -0
- package/out/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/std/alg/hash.yo +13 -21
- package/std/allocator.yo +25 -40
- package/std/async.yo +3 -7
- package/std/build.yo +105 -151
- package/std/cli/arg_parser.yo +184 -169
- package/std/collections/array_list.yo +350 -314
- package/std/collections/btree_map.yo +142 -131
- package/std/collections/deque.yo +132 -128
- package/std/collections/hash_map.yo +542 -566
- package/std/collections/hash_set.yo +623 -687
- package/std/collections/linked_list.yo +275 -293
- package/std/collections/ordered_map.yo +113 -85
- package/std/collections/priority_queue.yo +73 -73
- package/std/crypto/md5.yo +191 -95
- package/std/crypto/random.yo +56 -64
- package/std/crypto/sha256.yo +151 -107
- package/std/encoding/base64.yo +87 -81
- package/std/encoding/hex.yo +43 -50
- package/std/encoding/html.yo +56 -81
- package/std/encoding/html_char_utils.yo +7 -13
- package/std/encoding/html_entities.yo +2248 -2253
- package/std/encoding/json.yo +316 -224
- package/std/encoding/punycode.yo +86 -116
- package/std/encoding/toml.yo +67 -66
- package/std/encoding/utf16.yo +37 -44
- package/std/env.yo +62 -91
- package/std/error.yo +7 -15
- package/std/fmt/display.yo +5 -9
- package/std/fmt/index.yo +8 -14
- package/std/fmt/to_string.yo +330 -315
- package/std/fmt/writer.yo +58 -87
- package/std/fs/dir.yo +83 -102
- package/std/fs/file.yo +147 -180
- package/std/fs/metadata.yo +45 -78
- package/std/fs/temp.yo +55 -65
- package/std/fs/types.yo +27 -40
- package/std/fs/walker.yo +53 -68
- package/std/gc.yo +5 -8
- package/std/glob.yo +30 -43
- package/std/http/client.yo +107 -120
- package/std/http/http.yo +106 -96
- package/std/http/index.yo +4 -6
- package/std/imm/list.yo +88 -93
- package/std/imm/map.yo +528 -464
- package/std/imm/set.yo +52 -57
- package/std/imm/sorted_map.yo +340 -286
- package/std/imm/sorted_set.yo +57 -63
- package/std/imm/string.yo +404 -345
- package/std/imm/vec.yo +173 -181
- package/std/io/reader.yo +3 -6
- package/std/io/writer.yo +4 -8
- package/std/libc/assert.yo +5 -9
- package/std/libc/ctype.yo +32 -22
- package/std/libc/dirent.yo +26 -25
- package/std/libc/errno.yo +164 -90
- package/std/libc/fcntl.yo +52 -45
- package/std/libc/float.yo +66 -44
- package/std/libc/limits.yo +42 -33
- package/std/libc/math.yo +53 -82
- package/std/libc/signal.yo +72 -47
- package/std/libc/stdatomic.yo +217 -188
- package/std/libc/stdint.yo +5 -29
- package/std/libc/stdio.yo +5 -29
- package/std/libc/stdlib.yo +32 -39
- package/std/libc/string.yo +5 -23
- package/std/libc/sys/stat.yo +58 -56
- package/std/libc/time.yo +5 -19
- package/std/libc/unistd.yo +5 -20
- package/std/libc/wctype.yo +6 -9
- package/std/libc/windows.yo +26 -30
- package/std/log.yo +41 -55
- package/std/net/addr.yo +102 -97
- package/std/net/dns.yo +27 -28
- package/std/net/errors.yo +50 -49
- package/std/net/tcp.yo +113 -124
- package/std/net/udp.yo +55 -66
- package/std/os/env.yo +35 -33
- package/std/os/signal.yo +15 -25
- package/std/path.yo +276 -311
- package/std/prelude.yo +6304 -4315
- package/std/process/command.yo +87 -103
- package/std/process/index.yo +12 -31
- package/std/regex/compiler.yo +196 -95
- package/std/regex/flags.yo +58 -39
- package/std/regex/index.yo +157 -173
- package/std/regex/match.yo +20 -31
- package/std/regex/node.yo +134 -152
- package/std/regex/parser.yo +283 -259
- package/std/regex/unicode.yo +172 -202
- package/std/regex/vm.yo +155 -171
- package/std/string/index.yo +5 -7
- package/std/string/rune.yo +45 -55
- package/std/string/string.yo +937 -964
- package/std/string/string_builder.yo +94 -104
- package/std/string/unicode.yo +46 -64
- package/std/sync/channel.yo +72 -73
- package/std/sync/cond.yo +31 -36
- package/std/sync/mutex.yo +30 -32
- package/std/sync/once.yo +13 -16
- package/std/sync/rwlock.yo +26 -31
- package/std/sync/waitgroup.yo +20 -25
- package/std/sys/advise.yo +16 -24
- package/std/sys/bufio/buf_reader.yo +77 -93
- package/std/sys/bufio/buf_writer.yo +52 -65
- package/std/sys/clock.yo +4 -9
- package/std/sys/constants.yo +77 -61
- package/std/sys/copy.yo +4 -10
- package/std/sys/dir.yo +26 -43
- package/std/sys/dns.yo +41 -61
- package/std/sys/errors.yo +95 -103
- package/std/sys/events.yo +45 -57
- package/std/sys/externs.yo +319 -267
- package/std/sys/fallocate.yo +7 -11
- package/std/sys/fcntl.yo +14 -22
- package/std/sys/file.yo +26 -40
- package/std/sys/future.yo +5 -8
- package/std/sys/iov.yo +12 -25
- package/std/sys/lock.yo +12 -13
- package/std/sys/mmap.yo +38 -43
- package/std/sys/path.yo +3 -8
- package/std/sys/perm.yo +7 -21
- package/std/sys/pipe.yo +5 -12
- package/std/sys/process.yo +23 -29
- package/std/sys/seek.yo +10 -12
- package/std/sys/signal.yo +7 -13
- package/std/sys/signals.yo +52 -35
- package/std/sys/socket.yo +63 -58
- package/std/sys/socketpair.yo +3 -6
- package/std/sys/sockinfo.yo +11 -20
- package/std/sys/statfs.yo +11 -34
- package/std/sys/statx.yo +25 -52
- package/std/sys/sysinfo.yo +15 -20
- package/std/sys/tcp.yo +62 -92
- package/std/sys/temp.yo +5 -9
- package/std/sys/time.yo +5 -15
- package/std/sys/timer.yo +6 -11
- package/std/sys/tty.yo +10 -18
- package/std/sys/udp.yo +22 -39
- package/std/sys/umask.yo +3 -6
- package/std/sys/unix.yo +33 -52
- package/std/testing/bench.yo +49 -52
- package/std/thread.yo +10 -15
- package/std/time/datetime.yo +105 -89
- package/std/time/duration.yo +43 -56
- package/std/time/instant.yo +13 -18
- package/std/time/sleep.yo +5 -9
- package/std/url/index.yo +184 -209
- package/std/worker.yo +6 -10
package/std/sys/signal.yo
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
//! Signal handling functions.
|
|
2
2
|
//!
|
|
3
3
|
//! Provides low-level wrappers for signal registration and delivery.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
SignalHandler :: (fn(data: *(u8)) -> unit);
|
|
8
|
-
|
|
4
|
+
{ __yo_signal_start, __yo_signal_stop, __yo_kill } :: import("./externs.yo");
|
|
5
|
+
SignalHandler :: (fn(data : *(u8)) -> unit);
|
|
9
6
|
// Register a signal handler.
|
|
10
7
|
// Returns 0 on success, -errno on failure.
|
|
11
|
-
on_signal :: (fn(signum: i32, handler: SignalHandler) -> i32)(
|
|
8
|
+
on_signal :: (fn(signum : i32, handler : SignalHandler) -> i32)(
|
|
12
9
|
__yo_signal_start(signum, unsafe.cast(handler, *(u8)))
|
|
13
10
|
);
|
|
14
|
-
|
|
15
11
|
// Remove a signal handler (reset to default).
|
|
16
12
|
// Returns 0 on success, -errno on failure.
|
|
17
|
-
off_signal :: (fn(signum: i32) -> i32)(
|
|
13
|
+
off_signal :: (fn(signum : i32) -> i32)(
|
|
18
14
|
__yo_signal_stop(signum)
|
|
19
15
|
);
|
|
20
|
-
|
|
21
16
|
// Send a signal to a process.
|
|
22
17
|
// Returns 0 on success, -errno on failure.
|
|
23
|
-
kill :: (fn(pid: i32, signum: i32) -> i32)(
|
|
18
|
+
kill :: (fn(pid : i32, signum : i32) -> i32)(
|
|
24
19
|
__yo_kill(pid, signum)
|
|
25
20
|
);
|
|
26
|
-
|
|
27
|
-
export
|
|
21
|
+
export(
|
|
28
22
|
SignalHandler,
|
|
29
23
|
on_signal,
|
|
30
24
|
off_signal,
|
|
31
25
|
kill
|
|
32
|
-
;
|
|
26
|
+
);
|
package/std/sys/signals.yo
CHANGED
|
@@ -2,29 +2,25 @@
|
|
|
2
2
|
//!
|
|
3
3
|
//! Platform-aware signal numbers.
|
|
4
4
|
//! Uses `process.platform` for values that differ between Linux and macOS.
|
|
5
|
-
|
|
6
|
-
{ platform, Platform } :: import "../process";
|
|
7
|
-
|
|
5
|
+
{ platform, Platform } :: import("../process");
|
|
8
6
|
// ============================================================================
|
|
9
7
|
// Signal Constants (POSIX signals)
|
|
10
8
|
// ============================================================================
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
SIGTERM :: i32(15);
|
|
27
|
-
|
|
9
|
+
SIGHUP :: i32(1);
|
|
10
|
+
SIGINT :: i32(2);
|
|
11
|
+
SIGQUIT :: i32(3);
|
|
12
|
+
SIGILL :: i32(4);
|
|
13
|
+
SIGTRAP :: i32(5);
|
|
14
|
+
SIGABRT :: i32(6);
|
|
15
|
+
SIGBUS :: i32(7);
|
|
16
|
+
SIGFPE :: i32(8);
|
|
17
|
+
SIGKILL :: i32(9);
|
|
18
|
+
SIGUSR1 :: i32(10);
|
|
19
|
+
SIGSEGV :: i32(11);
|
|
20
|
+
SIGUSR2 :: i32(12);
|
|
21
|
+
SIGPIPE :: i32(13);
|
|
22
|
+
SIGALRM :: i32(14);
|
|
23
|
+
SIGTERM :: i32(15);
|
|
28
24
|
// Platform-dependent signal numbers
|
|
29
25
|
SIGCHLD :: cond(
|
|
30
26
|
(platform == Platform.Macos) => i32(20),
|
|
@@ -42,19 +38,40 @@ SIGTSTP :: cond(
|
|
|
42
38
|
(platform == Platform.Macos) => i32(18),
|
|
43
39
|
true => i32(20)
|
|
44
40
|
);
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
SIGXFSZ :: i32(25);
|
|
41
|
+
SIGTTIN :: i32(21);
|
|
42
|
+
SIGTTOU :: i32(22);
|
|
43
|
+
SIGURG :: i32(23);
|
|
44
|
+
SIGXCPU :: i32(24);
|
|
45
|
+
SIGXFSZ :: i32(25);
|
|
51
46
|
SIGVTALRM :: i32(26);
|
|
52
|
-
SIGPROF
|
|
53
|
-
SIGWINCH
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
SIGPROF :: i32(27);
|
|
48
|
+
SIGWINCH :: i32(28);
|
|
49
|
+
export(
|
|
50
|
+
SIGHUP,
|
|
51
|
+
SIGINT,
|
|
52
|
+
SIGQUIT,
|
|
53
|
+
SIGILL,
|
|
54
|
+
SIGTRAP,
|
|
55
|
+
SIGABRT,
|
|
56
|
+
SIGBUS,
|
|
57
|
+
SIGFPE,
|
|
58
|
+
SIGKILL,
|
|
59
|
+
SIGUSR1,
|
|
60
|
+
SIGSEGV,
|
|
61
|
+
SIGUSR2,
|
|
62
|
+
SIGPIPE,
|
|
63
|
+
SIGALRM,
|
|
64
|
+
SIGTERM,
|
|
65
|
+
SIGCHLD,
|
|
66
|
+
SIGCONT,
|
|
67
|
+
SIGSTOP,
|
|
68
|
+
SIGTSTP,
|
|
69
|
+
SIGTTIN,
|
|
70
|
+
SIGTTOU,
|
|
71
|
+
SIGURG,
|
|
72
|
+
SIGXCPU,
|
|
73
|
+
SIGXFSZ,
|
|
74
|
+
SIGVTALRM,
|
|
75
|
+
SIGPROF,
|
|
76
|
+
SIGWINCH
|
|
77
|
+
);
|
package/std/sys/socket.yo
CHANGED
|
@@ -2,55 +2,41 @@
|
|
|
2
2
|
//!
|
|
3
3
|
//! Platform-aware socket constants for TCP, UDP, and Unix domain sockets.
|
|
4
4
|
//! Uses `process.platform` for values that differ between Linux and macOS.
|
|
5
|
-
|
|
6
|
-
{
|
|
7
|
-
{
|
|
8
|
-
__yo_sockaddr_storage_size,
|
|
9
|
-
__yo_sockaddr_in_size,
|
|
10
|
-
__yo_sockaddr_in6_size,
|
|
11
|
-
__yo_sockaddr_un_size
|
|
12
|
-
} :: import "./externs.yo";
|
|
13
|
-
|
|
5
|
+
{ platform, Platform } :: import("../process");
|
|
6
|
+
{ __yo_sockaddr_storage_size, __yo_sockaddr_in_size, __yo_sockaddr_in6_size, __yo_sockaddr_un_size } :: import("./externs.yo");
|
|
14
7
|
// ============================================================================
|
|
15
8
|
// Address Families (AF_*)
|
|
16
9
|
// ============================================================================
|
|
17
|
-
|
|
18
10
|
AF_UNSPEC :: i32(0);
|
|
19
|
-
AF_UNIX
|
|
20
|
-
AF_LOCAL
|
|
21
|
-
AF_INET
|
|
22
|
-
AF_INET6
|
|
11
|
+
AF_UNIX :: i32(1);
|
|
12
|
+
AF_LOCAL :: i32(1);
|
|
13
|
+
AF_INET :: i32(2);
|
|
14
|
+
AF_INET6 :: cond(
|
|
23
15
|
(platform == Platform.Macos) => i32(30),
|
|
24
16
|
(platform == Platform.Windows) => i32(23),
|
|
25
17
|
true => i32(10)
|
|
26
18
|
);
|
|
27
|
-
|
|
28
19
|
// ============================================================================
|
|
29
20
|
// Socket Types (SOCK_*)
|
|
30
21
|
// ============================================================================
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
SOCK_RAW :: i32(3);
|
|
22
|
+
SOCK_STREAM :: i32(1);
|
|
23
|
+
SOCK_DGRAM :: i32(2);
|
|
24
|
+
SOCK_RAW :: i32(3);
|
|
35
25
|
SOCK_SEQPACKET :: i32(5);
|
|
36
|
-
|
|
37
26
|
// ============================================================================
|
|
38
27
|
// Socket Option Levels
|
|
39
28
|
// ============================================================================
|
|
40
|
-
|
|
41
29
|
SOL_SOCKET :: cond(
|
|
42
30
|
((platform == Platform.Macos) || (platform == Platform.Windows)) => i32(0xFFFF),
|
|
43
31
|
true => i32(1)
|
|
44
32
|
);
|
|
45
|
-
IPPROTO_TCP
|
|
46
|
-
IPPROTO_UDP
|
|
47
|
-
IPPROTO_IP
|
|
33
|
+
IPPROTO_TCP :: i32(6);
|
|
34
|
+
IPPROTO_UDP :: i32(17);
|
|
35
|
+
IPPROTO_IP :: i32(0);
|
|
48
36
|
IPPROTO_IPV6 :: i32(41);
|
|
49
|
-
|
|
50
37
|
// ============================================================================
|
|
51
38
|
// Socket Options (SO_*)
|
|
52
39
|
// ============================================================================
|
|
53
|
-
|
|
54
40
|
SO_REUSEADDR :: cond(
|
|
55
41
|
((platform == Platform.Macos) || (platform == Platform.Windows)) => i32(0x0004),
|
|
56
42
|
true => i32(2)
|
|
@@ -96,13 +82,11 @@ SO_REUSEPORT :: cond(
|
|
|
96
82
|
(platform == Platform.Windows) => i32(0),
|
|
97
83
|
true => i32(15)
|
|
98
84
|
);
|
|
99
|
-
|
|
100
85
|
// ============================================================================
|
|
101
86
|
// TCP Options (TCP_*)
|
|
102
87
|
// ============================================================================
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
TCP_KEEPIDLE :: cond(
|
|
88
|
+
TCP_NODELAY :: i32(1);
|
|
89
|
+
TCP_KEEPIDLE :: cond(
|
|
106
90
|
(platform == Platform.Macos) => i32(0x10),
|
|
107
91
|
(platform == Platform.Windows) => i32(3),
|
|
108
92
|
true => i32(4)
|
|
@@ -117,47 +101,36 @@ TCP_KEEPCNT :: cond(
|
|
|
117
101
|
(platform == Platform.Windows) => i32(16),
|
|
118
102
|
true => i32(6)
|
|
119
103
|
);
|
|
120
|
-
|
|
121
104
|
// ============================================================================
|
|
122
105
|
// shutdown() how parameter
|
|
123
106
|
// ============================================================================
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
SHUT_WR :: i32(1);
|
|
107
|
+
SHUT_RD :: i32(0);
|
|
108
|
+
SHUT_WR :: i32(1);
|
|
127
109
|
SHUT_RDWR :: i32(2);
|
|
128
|
-
|
|
129
110
|
// ============================================================================
|
|
130
111
|
// Special IP Addresses
|
|
131
112
|
// ============================================================================
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
INADDR_LOOPBACK :: u32(0x7F000001);
|
|
113
|
+
INADDR_ANY :: u32(0x00000000);
|
|
114
|
+
INADDR_LOOPBACK :: u32(0x7F000001);
|
|
135
115
|
INADDR_BROADCAST :: u32(0xFFFFFFFF);
|
|
136
|
-
|
|
137
116
|
// ============================================================================
|
|
138
117
|
// Sockaddr helpers
|
|
139
118
|
// ============================================================================
|
|
140
|
-
|
|
141
119
|
sockaddr_storage_size :: (fn() -> usize)(
|
|
142
120
|
__yo_sockaddr_storage_size()
|
|
143
121
|
);
|
|
144
|
-
|
|
145
122
|
sockaddr_in_size :: (fn() -> usize)(
|
|
146
123
|
__yo_sockaddr_in_size()
|
|
147
124
|
);
|
|
148
|
-
|
|
149
125
|
sockaddr_in6_size :: (fn() -> usize)(
|
|
150
126
|
__yo_sockaddr_in6_size()
|
|
151
127
|
);
|
|
152
|
-
|
|
153
128
|
sockaddr_un_size :: (fn() -> usize)(
|
|
154
129
|
__yo_sockaddr_un_size()
|
|
155
130
|
);
|
|
156
|
-
|
|
157
131
|
// ============================================================================
|
|
158
132
|
// getnameinfo() flags (NI_*)
|
|
159
133
|
// ============================================================================
|
|
160
|
-
|
|
161
134
|
NI_NUMERICHOST :: cond(
|
|
162
135
|
((platform == Platform.Macos) || (platform == Platform.Windows)) => i32(2),
|
|
163
136
|
true => i32(1)
|
|
@@ -175,17 +148,49 @@ NI_NAMEREQD :: cond(
|
|
|
175
148
|
true => i32(8)
|
|
176
149
|
);
|
|
177
150
|
NI_DGRAM :: i32(16);
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
151
|
+
export(
|
|
152
|
+
AF_UNSPEC,
|
|
153
|
+
AF_UNIX,
|
|
154
|
+
AF_LOCAL,
|
|
155
|
+
AF_INET,
|
|
156
|
+
AF_INET6,
|
|
157
|
+
SOCK_STREAM,
|
|
158
|
+
SOCK_DGRAM,
|
|
159
|
+
SOCK_RAW,
|
|
160
|
+
SOCK_SEQPACKET,
|
|
161
|
+
SOL_SOCKET,
|
|
162
|
+
IPPROTO_TCP,
|
|
163
|
+
IPPROTO_UDP,
|
|
164
|
+
IPPROTO_IP,
|
|
165
|
+
IPPROTO_IPV6,
|
|
166
|
+
SO_REUSEADDR,
|
|
167
|
+
SO_REUSEPORT,
|
|
168
|
+
SO_KEEPALIVE,
|
|
169
|
+
SO_BROADCAST,
|
|
170
|
+
SO_RCVBUF,
|
|
171
|
+
SO_SNDBUF,
|
|
172
|
+
SO_RCVTIMEO,
|
|
173
|
+
SO_SNDTIMEO,
|
|
174
|
+
SO_ERROR,
|
|
175
|
+
SO_TYPE,
|
|
185
176
|
SO_LINGER,
|
|
186
|
-
TCP_NODELAY,
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
177
|
+
TCP_NODELAY,
|
|
178
|
+
TCP_KEEPIDLE,
|
|
179
|
+
TCP_KEEPINTVL,
|
|
180
|
+
TCP_KEEPCNT,
|
|
181
|
+
SHUT_RD,
|
|
182
|
+
SHUT_WR,
|
|
183
|
+
SHUT_RDWR,
|
|
184
|
+
INADDR_ANY,
|
|
185
|
+
INADDR_LOOPBACK,
|
|
186
|
+
INADDR_BROADCAST,
|
|
187
|
+
sockaddr_storage_size,
|
|
188
|
+
sockaddr_in_size,
|
|
189
|
+
sockaddr_in6_size,
|
|
190
|
+
sockaddr_un_size,
|
|
191
|
+
NI_NUMERICHOST,
|
|
192
|
+
NI_NUMERICSERV,
|
|
193
|
+
NI_NOFQDN,
|
|
194
|
+
NI_NAMEREQD,
|
|
195
|
+
NI_DGRAM
|
|
196
|
+
);
|
package/std/sys/socketpair.yo
CHANGED
|
@@ -2,13 +2,10 @@
|
|
|
2
2
|
//!
|
|
3
3
|
//! Synchronous wrapper for `socketpair`-like behavior.
|
|
4
4
|
//! Returns 0 on success, negative error on failure.
|
|
5
|
-
|
|
6
|
-
{ __yo_sync_socketpair } :: import "./externs.yo";
|
|
7
|
-
|
|
5
|
+
{ __yo_sync_socketpair } :: import("./externs.yo");
|
|
8
6
|
// Create a pair of connected sockets.
|
|
9
7
|
// Writes two socket fds into `sv` (sv[0], sv[1]).
|
|
10
|
-
socketpair :: (fn(domain: i32, sock_type: i32, protocol: i32, sv: *(i32)) -> i32)(
|
|
8
|
+
socketpair :: (fn(domain : i32, sock_type : i32, protocol : i32, sv : *(i32)) -> i32)(
|
|
11
9
|
__yo_sync_socketpair(domain, sock_type, protocol, sv)
|
|
12
10
|
);
|
|
13
|
-
|
|
14
|
-
export socketpair;
|
|
11
|
+
export(socketpair);
|
package/std/sys/sockinfo.yo
CHANGED
|
@@ -2,38 +2,29 @@
|
|
|
2
2
|
//!
|
|
3
3
|
//! Synchronous wrappers for socket metadata operations.
|
|
4
4
|
//! Returns 0 on success, -errno (or negative platform socket error) on failure.
|
|
5
|
-
|
|
6
|
-
{
|
|
7
|
-
__yo_sync_getsockname,
|
|
8
|
-
__yo_sync_getpeername,
|
|
9
|
-
__yo_sync_getsockopt,
|
|
10
|
-
__yo_sync_setsockopt
|
|
11
|
-
} :: import "./externs.yo";
|
|
12
|
-
|
|
5
|
+
{ __yo_sync_getsockname, __yo_sync_getpeername, __yo_sync_getsockopt, __yo_sync_setsockopt } :: import("./externs.yo");
|
|
13
6
|
// Get local address of a socket.
|
|
14
7
|
// Writes the address into `addr` buffer and updates `addrlen` with actual size.
|
|
15
|
-
getsockname :: (fn(sockfd: i32, addr: *(u8), addrlen: *(u32)) -> i32)(
|
|
8
|
+
getsockname :: (fn(sockfd : i32, addr : *(u8), addrlen : *(u32)) -> i32)(
|
|
16
9
|
__yo_sync_getsockname(sockfd, addr, addrlen)
|
|
17
10
|
);
|
|
18
|
-
|
|
19
11
|
// Get remote peer address of a connected socket.
|
|
20
12
|
// Writes the address into `addr` buffer and updates `addrlen` with actual size.
|
|
21
|
-
getpeername :: (fn(sockfd: i32, addr: *(u8), addrlen: *(u32)) -> i32)(
|
|
13
|
+
getpeername :: (fn(sockfd : i32, addr : *(u8), addrlen : *(u32)) -> i32)(
|
|
22
14
|
__yo_sync_getpeername(sockfd, addr, addrlen)
|
|
23
15
|
);
|
|
24
|
-
|
|
25
16
|
// Get socket option value.
|
|
26
17
|
// `optlen` should be initialized with input buffer size and is updated on return.
|
|
27
|
-
getsockopt :: (fn(sockfd: i32, level: i32, optname: i32, optval: *(u8), optlen: *(u32)) -> i32)(
|
|
18
|
+
getsockopt :: (fn(sockfd : i32, level : i32, optname : i32, optval : *(u8), optlen : *(u32)) -> i32)(
|
|
28
19
|
__yo_sync_getsockopt(sockfd, level, optname, optval, optlen)
|
|
29
20
|
);
|
|
30
|
-
|
|
31
21
|
// Set socket option value.
|
|
32
|
-
setsockopt :: (fn(sockfd: i32, level: i32, optname: i32, optval: *(u8), optlen: u32) -> i32)(
|
|
22
|
+
setsockopt :: (fn(sockfd : i32, level : i32, optname : i32, optval : *(u8), optlen : u32) -> i32)(
|
|
33
23
|
__yo_sync_setsockopt(sockfd, level, optname, optval, optlen)
|
|
34
24
|
);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
getsockopt,
|
|
39
|
-
|
|
25
|
+
export(
|
|
26
|
+
getsockname,
|
|
27
|
+
getpeername,
|
|
28
|
+
getsockopt,
|
|
29
|
+
setsockopt
|
|
30
|
+
);
|
package/std/sys/statfs.yo
CHANGED
|
@@ -16,75 +16,52 @@
|
|
|
16
16
|
// assert(ret == i32(0));
|
|
17
17
|
// block_size := statfs.statfs_bsize(buf);
|
|
18
18
|
// free(.Some(*(void)(buf)));
|
|
19
|
-
|
|
20
|
-
{
|
|
21
|
-
__yo_sync_statfs,
|
|
22
|
-
__yo_statfs_buf_size,
|
|
23
|
-
__yo_statfs_type,
|
|
24
|
-
__yo_statfs_bsize,
|
|
25
|
-
__yo_statfs_blocks,
|
|
26
|
-
__yo_statfs_bfree,
|
|
27
|
-
__yo_statfs_bavail,
|
|
28
|
-
__yo_statfs_files,
|
|
29
|
-
__yo_statfs_ffree
|
|
30
|
-
} :: import "./externs.yo";
|
|
31
|
-
|
|
19
|
+
{ __yo_sync_statfs, __yo_statfs_buf_size, __yo_statfs_type, __yo_statfs_bsize, __yo_statfs_blocks, __yo_statfs_bfree, __yo_statfs_bavail, __yo_statfs_files, __yo_statfs_ffree } :: import("./externs.yo");
|
|
32
20
|
// ============================================================================
|
|
33
21
|
// statfs — Filesystem statistics (sync)
|
|
34
22
|
// ============================================================================
|
|
35
|
-
|
|
36
23
|
// Get filesystem statistics for the given path.
|
|
37
24
|
// Writes result to `buf` (use statfs_buf_size() to allocate).
|
|
38
25
|
// Returns 0 on success, -errno on failure.
|
|
39
|
-
statfs :: (fn(path: *(u8), buf: *(u8)) -> i32)(
|
|
26
|
+
statfs :: (fn(path : *(u8), buf : *(u8)) -> i32)(
|
|
40
27
|
__yo_sync_statfs(path, buf)
|
|
41
28
|
);
|
|
42
|
-
|
|
43
29
|
// ============================================================================
|
|
44
30
|
// Statfs buffer helpers
|
|
45
31
|
// ============================================================================
|
|
46
|
-
|
|
47
32
|
// Get required buffer size for statfs.
|
|
48
33
|
statfs_buf_size :: (fn() -> usize)(
|
|
49
34
|
__yo_statfs_buf_size()
|
|
50
35
|
);
|
|
51
|
-
|
|
52
36
|
// Filesystem type (0 on platforms without type).
|
|
53
|
-
statfs_type :: (fn(buf: *(u8)) -> u64)(
|
|
37
|
+
statfs_type :: (fn(buf : *(u8)) -> u64)(
|
|
54
38
|
__yo_statfs_type(buf)
|
|
55
39
|
);
|
|
56
|
-
|
|
57
40
|
// Fundamental filesystem block size.
|
|
58
|
-
statfs_bsize :: (fn(buf: *(u8)) -> u64)(
|
|
41
|
+
statfs_bsize :: (fn(buf : *(u8)) -> u64)(
|
|
59
42
|
__yo_statfs_bsize(buf)
|
|
60
43
|
);
|
|
61
|
-
|
|
62
44
|
// Total data blocks in filesystem.
|
|
63
|
-
statfs_blocks :: (fn(buf: *(u8)) -> u64)(
|
|
45
|
+
statfs_blocks :: (fn(buf : *(u8)) -> u64)(
|
|
64
46
|
__yo_statfs_blocks(buf)
|
|
65
47
|
);
|
|
66
|
-
|
|
67
48
|
// Free blocks in filesystem.
|
|
68
|
-
statfs_bfree :: (fn(buf: *(u8)) -> u64)(
|
|
49
|
+
statfs_bfree :: (fn(buf : *(u8)) -> u64)(
|
|
69
50
|
__yo_statfs_bfree(buf)
|
|
70
51
|
);
|
|
71
|
-
|
|
72
52
|
// Free blocks available to unprivileged users.
|
|
73
|
-
statfs_bavail :: (fn(buf: *(u8)) -> u64)(
|
|
53
|
+
statfs_bavail :: (fn(buf : *(u8)) -> u64)(
|
|
74
54
|
__yo_statfs_bavail(buf)
|
|
75
55
|
);
|
|
76
|
-
|
|
77
56
|
// Total file nodes (inodes).
|
|
78
|
-
statfs_files :: (fn(buf: *(u8)) -> u64)(
|
|
57
|
+
statfs_files :: (fn(buf : *(u8)) -> u64)(
|
|
79
58
|
__yo_statfs_files(buf)
|
|
80
59
|
);
|
|
81
|
-
|
|
82
60
|
// Free file nodes (inodes).
|
|
83
|
-
statfs_ffree :: (fn(buf: *(u8)) -> u64)(
|
|
61
|
+
statfs_ffree :: (fn(buf : *(u8)) -> u64)(
|
|
84
62
|
__yo_statfs_ffree(buf)
|
|
85
63
|
);
|
|
86
|
-
|
|
87
|
-
export
|
|
64
|
+
export(
|
|
88
65
|
statfs,
|
|
89
66
|
statfs_buf_size,
|
|
90
67
|
statfs_type,
|
|
@@ -94,4 +71,4 @@ export
|
|
|
94
71
|
statfs_bavail,
|
|
95
72
|
statfs_files,
|
|
96
73
|
statfs_ffree
|
|
97
|
-
;
|
|
74
|
+
);
|
package/std/sys/statx.yo
CHANGED
|
@@ -2,94 +2,67 @@
|
|
|
2
2
|
//!
|
|
3
3
|
//! Object wrapper around the C statx buffer, providing
|
|
4
4
|
//! accessor methods for file metadata.
|
|
5
|
-
|
|
6
|
-
{
|
|
7
|
-
S_IFMT, S_IFREG, S_IFDIR, S_IFLNK
|
|
8
|
-
} :: import "./constants.yo";
|
|
9
|
-
|
|
10
|
-
{
|
|
11
|
-
__yo_statx_mode, __yo_statx_size, __yo_statx_uid, __yo_statx_gid,
|
|
12
|
-
__yo_statx_ino, __yo_statx_nlink,
|
|
13
|
-
__yo_statx_mtime_sec, __yo_statx_mtime_nsec,
|
|
14
|
-
__yo_statx_atime_sec, __yo_statx_atime_nsec,
|
|
15
|
-
__yo_statx_ctime_sec, __yo_statx_ctime_nsec
|
|
16
|
-
} :: import "./externs.yo";
|
|
17
|
-
|
|
5
|
+
{ S_IFMT, S_IFREG, S_IFDIR, S_IFLNK } :: import("./constants.yo");
|
|
6
|
+
{ __yo_statx_mode, __yo_statx_size, __yo_statx_uid, __yo_statx_gid, __yo_statx_ino, __yo_statx_nlink, __yo_statx_mtime_sec, __yo_statx_mtime_nsec, __yo_statx_atime_sec, __yo_statx_atime_nsec, __yo_statx_ctime_sec, __yo_statx_ctime_nsec } :: import("./externs.yo");
|
|
18
7
|
// ============================================================================
|
|
19
8
|
// Statx - File status from async stat operations
|
|
20
9
|
// ============================================================================
|
|
21
|
-
|
|
22
10
|
Statx :: struct(
|
|
23
|
-
_buf_ptr: *(u8),
|
|
24
|
-
_buf_size: usize
|
|
11
|
+
_buf_ptr : *(u8),
|
|
12
|
+
_buf_size : usize
|
|
25
13
|
);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
is_file : (fn(self: Self) -> bool)({
|
|
14
|
+
impl(
|
|
15
|
+
Statx,
|
|
16
|
+
is_file : (fn(self : Self) -> bool)({
|
|
29
17
|
mode := __yo_statx_mode(self._buf_ptr);
|
|
30
18
|
file_type := (mode & S_IFMT);
|
|
31
|
-
return
|
|
19
|
+
return(file_type == S_IFREG);
|
|
32
20
|
}),
|
|
33
|
-
|
|
34
|
-
is_directory : (fn(self: Self) -> bool)({
|
|
21
|
+
is_directory : (fn(self : Self) -> bool)({
|
|
35
22
|
mode := __yo_statx_mode(self._buf_ptr);
|
|
36
23
|
file_type := (mode & S_IFMT);
|
|
37
|
-
return
|
|
24
|
+
return(file_type == S_IFDIR);
|
|
38
25
|
}),
|
|
39
|
-
|
|
40
|
-
is_symlink : (fn(self: Self) -> bool)({
|
|
26
|
+
is_symlink : (fn(self : Self) -> bool)({
|
|
41
27
|
mode := __yo_statx_mode(self._buf_ptr);
|
|
42
28
|
file_type := (mode & S_IFMT);
|
|
43
|
-
return
|
|
29
|
+
return(file_type == S_IFLNK);
|
|
44
30
|
}),
|
|
45
|
-
|
|
46
|
-
size : (fn(self: Self) -> i64)(
|
|
31
|
+
size : (fn(self : Self) -> i64)(
|
|
47
32
|
__yo_statx_size(self._buf_ptr)
|
|
48
33
|
),
|
|
49
|
-
|
|
50
|
-
mode : (fn(self: Self) -> u32)(
|
|
34
|
+
mode : (fn(self : Self) -> u32)(
|
|
51
35
|
__yo_statx_mode(self._buf_ptr)
|
|
52
36
|
),
|
|
53
|
-
|
|
54
|
-
uid : (fn(self: Self) -> u32)(
|
|
37
|
+
uid : (fn(self : Self) -> u32)(
|
|
55
38
|
__yo_statx_uid(self._buf_ptr)
|
|
56
39
|
),
|
|
57
|
-
|
|
58
|
-
gid : (fn(self: Self) -> u32)(
|
|
40
|
+
gid : (fn(self : Self) -> u32)(
|
|
59
41
|
__yo_statx_gid(self._buf_ptr)
|
|
60
42
|
),
|
|
61
|
-
|
|
62
|
-
ino : (fn(self: Self) -> u64)(
|
|
43
|
+
ino : (fn(self : Self) -> u64)(
|
|
63
44
|
__yo_statx_ino(self._buf_ptr)
|
|
64
45
|
),
|
|
65
|
-
|
|
66
|
-
nlink : (fn(self: Self) -> u64)(
|
|
46
|
+
nlink : (fn(self : Self) -> u64)(
|
|
67
47
|
__yo_statx_nlink(self._buf_ptr)
|
|
68
48
|
),
|
|
69
|
-
|
|
70
|
-
mtime_sec : (fn(self: Self) -> i64)(
|
|
49
|
+
mtime_sec : (fn(self : Self) -> i64)(
|
|
71
50
|
__yo_statx_mtime_sec(self._buf_ptr)
|
|
72
51
|
),
|
|
73
|
-
|
|
74
|
-
mtime_nsec : (fn(self: Self) -> u32)(
|
|
52
|
+
mtime_nsec : (fn(self : Self) -> u32)(
|
|
75
53
|
__yo_statx_mtime_nsec(self._buf_ptr)
|
|
76
54
|
),
|
|
77
|
-
|
|
78
|
-
atime_sec : (fn(self: Self) -> i64)(
|
|
55
|
+
atime_sec : (fn(self : Self) -> i64)(
|
|
79
56
|
__yo_statx_atime_sec(self._buf_ptr)
|
|
80
57
|
),
|
|
81
|
-
|
|
82
|
-
atime_nsec : (fn(self: Self) -> u32)(
|
|
58
|
+
atime_nsec : (fn(self : Self) -> u32)(
|
|
83
59
|
__yo_statx_atime_nsec(self._buf_ptr)
|
|
84
60
|
),
|
|
85
|
-
|
|
86
|
-
ctime_sec : (fn(self: Self) -> i64)(
|
|
61
|
+
ctime_sec : (fn(self : Self) -> i64)(
|
|
87
62
|
__yo_statx_ctime_sec(self._buf_ptr)
|
|
88
63
|
),
|
|
89
|
-
|
|
90
|
-
ctime_nsec : (fn(self: Self) -> u32)(
|
|
64
|
+
ctime_nsec : (fn(self : Self) -> u32)(
|
|
91
65
|
__yo_statx_ctime_nsec(self._buf_ptr)
|
|
92
66
|
)
|
|
93
67
|
);
|
|
94
|
-
|
|
95
|
-
export Statx;
|
|
68
|
+
export(Statx);
|
package/std/sys/sysinfo.yo
CHANGED
|
@@ -2,13 +2,8 @@
|
|
|
2
2
|
//!
|
|
3
3
|
//! Synchronous wrappers for `uname`/`gethostname`.
|
|
4
4
|
//! Returns 0 on success, -errno / negative platform error on failure.
|
|
5
|
-
|
|
6
|
-
{
|
|
7
|
-
{
|
|
8
|
-
__yo_sync_uname,
|
|
9
|
-
__yo_sync_gethostname
|
|
10
|
-
} :: import "./externs.yo";
|
|
11
|
-
|
|
5
|
+
{ platform, Platform } :: import("../process");
|
|
6
|
+
{ __yo_sync_uname, __yo_sync_gethostname } :: import("./externs.yo");
|
|
12
7
|
// uname() layout constants.
|
|
13
8
|
// Linux uses 65-byte fields (6 fields total including domainname).
|
|
14
9
|
// macOS uses 256-byte fields (5 fields).
|
|
@@ -18,30 +13,30 @@ UTSNAME_FIELD_SIZE :: cond(
|
|
|
18
13
|
(platform == Platform.Windows) => usize(256),
|
|
19
14
|
true => usize(65)
|
|
20
15
|
);
|
|
21
|
-
|
|
22
16
|
UTSNAME_SIZE :: cond(
|
|
23
17
|
(platform == Platform.Macos) => usize(1280),
|
|
24
18
|
(platform == Platform.Windows) => usize(1280),
|
|
25
19
|
true => usize(390)
|
|
26
20
|
);
|
|
27
|
-
|
|
28
21
|
UTSNAME_SYSNAME :: usize(0);
|
|
29
22
|
UTSNAME_NODENAME :: UTSNAME_FIELD_SIZE;
|
|
30
23
|
UTSNAME_RELEASE :: (UTSNAME_FIELD_SIZE * usize(2));
|
|
31
24
|
UTSNAME_VERSION :: (UTSNAME_FIELD_SIZE * usize(3));
|
|
32
25
|
UTSNAME_MACHINE :: (UTSNAME_FIELD_SIZE * usize(4));
|
|
33
|
-
|
|
34
|
-
uname :: (fn(buf: *(u8)) -> i32)(
|
|
26
|
+
uname :: (fn(buf : *(u8)) -> i32)(
|
|
35
27
|
__yo_sync_uname(buf)
|
|
36
28
|
);
|
|
37
|
-
|
|
38
|
-
gethostname :: (fn(name: *(u8), len: usize) -> i32)(
|
|
29
|
+
gethostname :: (fn(name : *(u8), len : usize) -> i32)(
|
|
39
30
|
__yo_sync_gethostname(name, len)
|
|
40
31
|
);
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
UTSNAME_SIZE,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
32
|
+
export(
|
|
33
|
+
uname,
|
|
34
|
+
gethostname,
|
|
35
|
+
UTSNAME_SIZE,
|
|
36
|
+
UTSNAME_FIELD_SIZE,
|
|
37
|
+
UTSNAME_SYSNAME,
|
|
38
|
+
UTSNAME_NODENAME,
|
|
39
|
+
UTSNAME_RELEASE,
|
|
40
|
+
UTSNAME_VERSION,
|
|
41
|
+
UTSNAME_MACHINE
|
|
42
|
+
);
|