func GetUserStore(dir string) (*UserFileStore, error) { var bf *fmap.BlockFile var users *bptree.BpTree path := filepath.Join(dir, "users.bptree") err := createOrOpen(path, func(path string) (err error) { bf, err = fmap.CreateBlockFile(path) if err != nil { return err } users, err = bptree.New(bf, -1, -1) return err }, func(path string) (err error) { bf, err = fmap.OpenBlockFile(path) if err != nil { return err } users, err = bptree.Open(bf) return err }, ) if err != nil { return nil, err } s := &UserFileStore{ path: path, bf: bf, users: users, } return s, bf.Sync() }