Fun
0.41.5
The programming language that makes You have fun
Main Page
Data Structures
Files
File List
Globals
Loading...
Searching...
No Matches
src
vm
os
socket_tcp_accept.c
Go to the documentation of this file.
1
/*
2
* This file is part of the Fun programming language.
3
* https://fun-lang.xyz/
4
*
5
* Copyright 2025 Johannes Findeisen <you@hanez.org>
6
* Licensed under the terms of the Apache-2.0 license.
7
* https://opensource.org/license/apache-2-0
8
*/
9
20
21
case
OP_SOCK_TCP_ACCEPT
: {
22
/* Pops listen fd; pushes client fd (>0) or 0 */
23
Value
fdv
= pop_value(vm);
24
int
client
= 0;
25
#ifdef __unix__
26
if
(
fdv
.type !=
VAL_INT
) {
27
fprintf
(stderr,
"Runtime type error: tcp_accept expects (int listen_fd)\n"
);
28
free_value
(
fdv
);
29
push_value
(vm,
make_int
(0));
30
break
;
31
}
32
int
s
= (int)
fdv
.i;
33
int
c
= accept(
s
, NULL, NULL);
34
if
(
c
>= 0)
client
=
c
;
35
#endif
36
free_value
(
fdv
);
37
push_value
(vm,
make_int
(
client
> 0 ?
client
: 0));
38
break
;
39
}
OP_SOCK_TCP_ACCEPT
@ OP_SOCK_TCP_ACCEPT
Definition
bytecode.h:221
fdv
Value fdv
Definition
fd_poll_read.c:25
c
Value c
Definition
load_const.c:31
s
uint32_t s
Definition
rol.c:31
client
int client
Definition
socket_tcp_accept.c:24
free_value
free_value(fdv)
push_value
push_value(vm, make_int(client > 0 ? client :0))
Value
Tagged union representing a Fun value.
Definition
value.h:68
make_int
Value make_int(int64_t v)
Construct a Value representing a 64-bit integer.
Definition
value.c:51
VAL_INT
@ VAL_INT
Definition
value.h:51
fprintf
#define fprintf
Definition
vm.c:200
Generated on
for Fun by
1.16.1