@@ -53,6 +53,8 @@ func AvailableDatasetNames() ([]string, error) {
5353 if stdout , _ , err := cmd .Exec ("list" , "-H" , "-t" , "filesystem" , "-o" , "name" ); err == nil {
5454 datasetNames := strings .Split (stdout , "\n " )
5555 return datasetNames , nil
56+ } else if _ , ok := err .(ExecutableNotFound ); ok {
57+ return nil , errors .New ("'zfs' executable not found. Try again with the '-use-sudo' flag" )
5658 } else {
5759 return nil , err
5860 }
@@ -61,22 +63,25 @@ func AvailableDatasetNames() ([]string, error) {
6163func NewZFSForFilePath (path string ) (ZFS , Dataset , error ) {
6264 cmd := NewZFSCmd (config .Get .ZFS .UseSudo )
6365 stdout , _ , err := cmd .Exec ("list" , "-Ho" , "name" )
64- if err != nil {
65- return ZFS {}, Dataset {}, err
66- }
67- for _ , pool := range strings .Split (stdout , "\n " ) {
68- z , err := NewZFS (pool )
69- if err != nil {
70- continue
71- }
72- ds , err := z .FindDatasetForPath (path )
73- if err != nil {
74- continue
75- }
66+ if err == nil {
67+ for _ , pool := range strings .Split (stdout , "\n " ) {
68+ z , err := NewZFS (pool )
69+ if err != nil {
70+ continue
71+ }
72+ ds , err := z .FindDatasetForPath (path )
73+ if err != nil {
74+ continue
75+ }
7676
77- return z , ds , nil
77+ return z , ds , nil
78+ }
79+ return ZFS {}, Dataset {}, fmt .Errorf ("dataset for file-path: %s not found" , path )
80+ } else if _ , ok := err .(ExecutableNotFound ); ok {
81+ return ZFS {}, Dataset {}, errors .New ("'zfs' executable not found. Try again with the '-use-sudo' flag" )
82+ } else {
83+ return ZFS {}, Dataset {}, err
7884 }
79- return ZFS {}, Dataset {}, fmt .Errorf ("dataset for file-path: %s not found" , path )
8085}
8186
8287func (self * ZFS ) Name () string {
0 commit comments