mirror of
https://github.com/octoleo/restic.git
synced 2024-11-19 03:25:19 +00:00
Merge pull request #659 from restic/device-freebsd
fs.DeviceID(): Return errors whehn fi is nil
This commit is contained in:
commit
149c01a86a
@ -359,7 +359,7 @@ func runBackup(opts BackupOptions, gopts GlobalOptions, args []string) error {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
if !opts.ExcludeOtherFS {
|
if !opts.ExcludeOtherFS || fi == nil {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,10 +12,19 @@ import (
|
|||||||
// DeviceID extracts the device ID from an os.FileInfo object by casting it
|
// DeviceID extracts the device ID from an os.FileInfo object by casting it
|
||||||
// to syscall.Stat_t
|
// to syscall.Stat_t
|
||||||
func DeviceID(fi os.FileInfo) (deviceID uint64, err error) {
|
func DeviceID(fi os.FileInfo) (deviceID uint64, err error) {
|
||||||
|
if fi == nil {
|
||||||
|
return 0, errors.New("unable to determine device: fi is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if fi.Sys() == nil {
|
||||||
|
return 0, errors.New("unable to determine device: fi.Sys() is nil")
|
||||||
|
}
|
||||||
|
|
||||||
if st, ok := fi.Sys().(*syscall.Stat_t); ok {
|
if st, ok := fi.Sys().(*syscall.Stat_t); ok {
|
||||||
// st.Dev is uint32 on Darwin and uint64 on Linux. Just cast
|
// st.Dev is uint32 on Darwin and uint64 on Linux. Just cast
|
||||||
// everything to uint64.
|
// everything to uint64.
|
||||||
return uint64(st.Dev), nil
|
return uint64(st.Dev), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0, errors.New("Could not cast to syscall.Stat_t")
|
return 0, errors.New("Could not cast to syscall.Stat_t")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user