Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions mdbx/env_not_win.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@ package mdbx
*/
import "C"

//TODO: fix me please

// Path returns the path argument passed to Open. Path returns a non-nil error
// if env.Open() was not previously called.
//
// See mdbx_env_get_path.
// func (env *Env) Path() (string, error) {
// var cpath *C.char
// ret := C.mdbx_env_get_path(env._env, &cpath)
// if ret != success {
// return "", operrno("mdbx_env_get_path", ret)
// }
// if cpath == nil {
// return "", errNotOpen
// }
// return C.GoString(cpath), nil
//}
//
//nolint:gocritic // reason: false positive on dupSubExpr
func (env *Env) Path() (string, error) {
var cpath *C.char
ret := C.mdbx_env_get_path(env._env, &cpath)
if ret != success {
return "", operrno("mdbx_env_get_path", ret)
}
if cpath == nil {
return "", errNotOpen
}
return C.GoString(cpath), nil
}
76 changes: 38 additions & 38 deletions mdbx/env_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,44 +5,44 @@ import (
"testing"
)

// func TestEnv_Path_notOpen(t *testing.T) {
// env, err := NewEnv()
// if err != nil {
// t.Fatalf("create: %v", err)
// }
// defer env.Close()
//
// // before Open the Path method returns "" and a non-nil error.
// path, err := env.Path()
// if err == nil {
// t.Errorf("no error returned before Open")
// }
// if path != "" {
// t.Errorf("non-zero path returned before Open")
// }
//}
//
// func TestEnv_Path(t *testing.T) {
// env, err := NewEnv()
// if err != nil {
// t.Fatalf("create: %v", err)
// }
//
// // open an environment
// dir := t.TempDir()
// err = env.Open(dir, 0, 0644)
// defer env.Close()
// if err != nil {
// t.Errorf("open: %v", err)
// }
// path, err := env.Path()
// if err != nil {
// t.Errorf("path: %v", err)
// }
// if path != dir {
// t.Errorf("path: %q (!= %q)", path, dir)
// }
//}
func TestEnv_Path_notOpen(t *testing.T) {
env, err := NewEnv(Default)
if err != nil {
t.Fatalf("create: %v", err)
}
defer env.Close()

// before Open the Path method returns "" and a non-nil error.
path, err := env.Path()
if err == nil {
t.Errorf("no error returned before Open")
}
if path != "" {
t.Errorf("non-zero path returned before Open")
}
}

func TestEnv_Path(t *testing.T) {
env, err := NewEnv(Default)
if err != nil {
t.Fatalf("create: %v", err)
}

// open an environment
dir := t.TempDir()
err = env.Open(dir, 0, 0644)
defer env.Close()
if err != nil {
t.Errorf("open: %v", err)
}
path, err := env.Path()
if err != nil {
t.Errorf("path: %v", err)
}
if path != dir {
t.Errorf("path: %q (!= %q)", path, dir)
}
}

func TestEnv_Open_notExist(t *testing.T) {
env, err := NewEnv(Default)
Expand Down
28 changes: 17 additions & 11 deletions mdbx/env_windows.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,22 @@ package mdbx
#include "mdbxgo.h"
*/
import "C"
import (
"unsafe"

"golang.org/x/sys/windows"
)

// TODO: fix me please
//func (env *Env) Path() (string, error) {
// var cpath *C.wchar_t
// ret := C.mdbx_env_get_pathW(env._env, &cpath)
// if ret != success {
// return "", operrno("mdbx_env_get_path", ret)
// }
// if cpath == nil {
// return "", errNotOpen
// }
// return C.GoString(cpath), nil
//}
func (env *Env) Path() (string, error) {
var cpath *C.wchar_t
ret := C.mdbx_env_get_pathW(env._env, &cpath)
if ret != success {
return "", operrno("mdbx_env_get_path", ret)
}
if cpath == nil {
return "", errNotOpen
}

return windows.UTF16PtrToString((*uint16)(unsafe.Pointer(cpath))), nil
}
Loading