#pragma lib
[m6w6/ext-psi] / tests / ndbm / ndbm.psi
index e61ba2ddb3777d48529f35a3b9f5f5cdd441a85e..9a0232c5b46df696b566beed19b5fe2e19c6f9cd 100644 (file)
@@ -1,28 +1,43 @@
+#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);
-       let content = arrval($data);
+       let key = arrval($key,
+               dptr = strval($0),
+               dsize = strlen($0)
+       );
+       let content = arrval($data,
+               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);
-       return to_array(dbm_fetch,
-               to_string(dptr, dsize),
-               to_int(dsize)
+       let key = arrval($key,
+               dptr = strval($dptr),
+               dsize = intval($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);
 }