From 66a49fc7704abda8866c6be4ad5186e3dc1d4538 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Fri, 14 Mar 2025 00:54:45 +0800 Subject: [PATCH] Make the example use stdio properly --- example/get.ha | 11 ++++++++--- example/put.ha | 22 +++++++++++++++++----- diff --git a/example/get.ha b/example/get.ha index 8db91673f483130f0a89c4e9d98050aee3b48a9b..5d87b4c21bbaf39241ba417d179e6ffbcecb92d8 100644 --- a/example/get.ha +++ b/example/get.ha @@ -1,14 +1,19 @@ use fmt; use io; use lmdb; +use strings; use types; use types::c; use os; export fn main() void = { + if (len(os::args) != 3) { + abort("need two arguments (db dir, key)"); + }; + const key = lmdb::val{ - mv_size = 13, - mv_data = c::unterminatedstr("this is a key"): *opaque, + mv_size = len(strings::toutf8(os::args[2])), + mv_data = c::unterminatedstr(os::args[2]): *opaque, }; let val: lmdb::val = lmdb::val{ mv_size = 0, @@ -23,7 +28,7 @@ abort("failed to create env"); }; let env: *lmdb::env = env as *lmdb::env; - let path = c::fromstr("./test.mdb"); + let path = c::fromstr(os::args[1]); defer free(path); rc = lmdb::env_open(env, path, 0, 0o644); if (rc != 0) { diff --git a/example/put.ha b/example/put.ha index 7318bf2452fb9e31f195c7e5919e2ed23f22db00..9e4783b6cdd0dbaf313f315b0fa8048636e5b9d1 100644 --- a/example/put.ha +++ b/example/put.ha @@ -1,15 +1,27 @@ use fmt; +use io; use lmdb; +use strings; +use types; use types::c; +use os; export fn main() void = { + if (len(os::args) != 3) { + abort("need two arguments (db dir, key)"); + }; + const key = lmdb::val{ - mv_size = 13, - mv_data = c::unterminatedstr("this is a key"): *opaque, + mv_size = len(strings::toutf8(os::args[2])), + mv_data = c::unterminatedstr(os::args[2]): *opaque, }; + + let v = io::drain(os::stdin)!; + defer free(v); + const val = lmdb::val{ - mv_size = 15, - mv_data = c::unterminatedstr("this is a value"): *opaque, + mv_size = len(v), + mv_data = (*(&v: *types::slice)).data: *opaque, }; let env: nullable *lmdb::env = null; @@ -20,7 +32,7 @@ abort("failed to create env"); }; let env: *lmdb::env = env as *lmdb::env; - let path = c::fromstr("./test.mdb"); + let path = c::fromstr(os::args[1]); defer free(path); rc = lmdb::env_open(env, path, 0, 0o644); if (rc != 0) { -- 2.48.1