some std wrappers around libc

This commit is contained in:
2025-08-03 10:37:18 +02:00
parent 6fc80626dc
commit 3fd62c6083
8 changed files with 101 additions and 56 deletions

View File

@@ -1,7 +1,7 @@
func main[] : I64
// https://brainfuck.org/sierpinski.b
let src: String = "++++++++[>+>++++<<-]>++>>+<[-[>>+<<-]+>>]>+[-<<<[->[+[-]+>++>>>-<<]<[<]>>++++++[<<+++++>>-]+<<++.[-]<<]>.>+[>>]>+]"
let src_len: I64 = c.strlen(src)
let src_len: I64 = str.len(src)
let i: I64 = 0
let memory: Ptr = c.calloc(1, 30000)
@@ -45,4 +45,4 @@ func main[] : I64
i = i + 1
c.free(memory)
mem.free(memory)

View File

@@ -7,7 +7,7 @@ func main[argc: I64, argv: Ptr] : I64
if c.strncmp(url, "http://", 7) != 0
dbg.panic("invalid url scheme")
let url_len: I64 = c.strlen(url)
let url_len: I64 = str.len(url)
let host_start: I64 = 7
let i: I64 = host_start
while i < url_len
@@ -24,12 +24,12 @@ func main[argc: I64, argv: Ptr] : I64
if s < 0
dbg.panic("failed to connect")
let req: String = c.malloc(2048)
let req: String = mem.alloc(2048)
c.snprintf(req, 2048, "GET %s HTTP/1.0\r\nHost: %s\r\nConnection: close\r\n\r\n", path, host)
c.send(s, req, c.strlen(req), 0)
c.free(req)
c.send(s, req, str.len(req), 0)
mem.free(req)
let header_buf: Ptr = c.malloc(8192)
let header_buf: Ptr = mem.alloc(8192)
let header_size: I64 = 0
let found: Bool = false
let end_index: I64 = -1
@@ -51,14 +51,14 @@ func main[argc: I64, argv: Ptr] : I64
if end_index < header_size
c.write(1, header_buf + end_index, header_size - end_index)
c.free(header_buf)
mem.free(header_buf)
let buffer: Ptr = c.malloc(4096)
let buffer: Ptr = mem.alloc(4096)
while true
let n: I64 = c.read(s, buffer, 4096)
if n <= 0
break
c.write(1, buffer, n)
c.free(buffer)
mem.free(buffer)
c.close(s)

View File

@@ -6,8 +6,8 @@ func main[] : I64
if a * b > out
let s: String = str.from_i64(a * b)
let s_rev: String = str.reverse(s)
if c.strcmp(s, s_rev) == 0
if str.equal(s, s_rev)
out = a * b
c.free(s)
c.free(s_rev)
mem.free(s)
mem.free(s_rev)
io.print_i64(out)

View File

@@ -2,7 +2,7 @@ func main[] : I64
let n: String = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"
let out: I64 = 0
let max: I64 = c.strlen(n) - 13
let max: I64 = str.len(n) - 13
for i in 0..max
let s: I64 = 1
let j: I64 = 0

View File

@@ -1,12 +1,12 @@
func main[] : I64
let s: I64 = net.listen(8000)
let resp: String = c.malloc(60000)
let resp: String = mem.alloc(60000)
while true
let c: I64 = c.accept(s, 0, 0)
if c < 0
let conn: I64 = c.accept(s, 0, 0)
if conn < 0
continue
let n: I64 = c.read(c, resp, 60000)
c.send(c, resp, n, 0)
c.close(c)
let n: I64 = c.read(conn, resp, 60000)
c.send(conn, resp, n, 0)
c.close(conn)