+#include <fcntl.h>
+
+#pragma lib "gdbm_compat"
+#include <ndbm.h>
+
+
function psi\dbm_open(string $file, int $open_flags, int $file_mode) : object {
let file = pathval($file);
let open_flags = intval($open_flags);
let file_mode = intval($file_mode);
- return to_object(dbm_open);
+ return dbm_open(file, open_flags, file_mode) as to_object(dbm_open);
}
-function psi\dbm_store(object $db, array $key, array $data, int $mode) : int {
+function psi\dbm_store(object $db, string $key, string $data, int $mode) : int {
let db = objval($db);
let key = arrval($key,
- strval($dptr),
- intval($dsize)
+ dptr = strval($0),
+ dsize = strlen($0)
);
let content = arrval($data,
- strval($dptr),
- intval($dsize)
+ dptr = strval($0),
+ dsize = strlen($0)
);
let store_mode = intval($mode);
- return to_int(dbm_store);
+ return dbm_store(db, key, content, store_mode) as to_int(dbm_store);
}
function psi\dbm_fetch(object $db, array $key) : array {
let db = objval($db);
let key = arrval($key,
- strval($dptr),
- intval($dsize)
+ dptr = strval($dptr),
+ dsize = intval($dsize)
);
- return to_array(dbm_fetch,
- to_string(dptr, dsize),
- to_int(dsize)
+ return dbm_fetch(db, key) as to_array(dbm_fetch,
+ to_int(dsize),
+ to_string(dptr, dsize)
);
}
function psi\dbm_close(object $db) : void {
let db = objval($db);
- return void(dbm_close);
+ return dbm_close(db) as void(dbm_close);
}