Lindenii Project Forge
Make the example use stdio properly
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, mv_data = null, }; let env: nullable *lmdb::env = null; let rc: int = lmdb::env_create(&env); if (rc != 0) { fmt::printf("error: {}\n", rc)!; 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) { fmt::printf("error: {}\n", rc)!; abort("failed to open env"); }; let txn: nullable *lmdb::txn = null; rc = lmdb::txn_begin(env, null, 0, &txn); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to create txn"); }; let txn: *lmdb::txn = txn as *lmdb::txn; let dbi: lmdb::dbi = 0; rc = lmdb::dbi_open(txn, null, lmdb::CREATE, &dbi); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to create dbi"); }; rc = lmdb::get(txn, dbi, &key, &val); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to get"); }; rc = lmdb::txn_abort(txn); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to abort"); }; let data: []u8 = *(&(types::slice { data = val.mv_data, length = val.mv_size, capacity = val.mv_size, }): *[]u8); io::write(os::stdout, data)!; };
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; let rc: int = lmdb::env_create(&env); if (rc != 0) { fmt::printf("error: {}\n", rc)!; 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) { fmt::printf("error: {}\n", rc)!; abort("failed to open env"); }; let txn: nullable *lmdb::txn = null; rc = lmdb::txn_begin(env, null, 0, &txn); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to create txn"); }; let txn: *lmdb::txn = txn as *lmdb::txn; let dbi: lmdb::dbi = 0; rc = lmdb::dbi_open(txn, null, lmdb::CREATE, &dbi); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to create dbi"); }; rc = lmdb::put(txn, dbi, &key, &val, 0); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to put"); }; rc = lmdb::txn_commit(txn); if (rc != 0) { fmt::printf("error: {}\n", rc)!; abort("failed to commit"); }; };