48 lines
		
	
	
		
			925 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			925 B
		
	
	
	
		
			Go
		
	
	
	
	
	
// +build !windows
 | 
						|
 | 
						|
package mount
 | 
						|
 | 
						|
import (
 | 
						|
	"os"
 | 
						|
	"path/filepath"
 | 
						|
	"sort"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
// SetTempMountLocation sets the temporary mount location
 | 
						|
func SetTempMountLocation(root string) error {
 | 
						|
	root, err := filepath.Abs(root)
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	if err := os.MkdirAll(root, 0700); err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	tempMountLocation = root
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// CleanupTempMounts all temp mounts and remove the directories
 | 
						|
func CleanupTempMounts(flags int) error {
 | 
						|
	mounts, err := Self()
 | 
						|
	if err != nil {
 | 
						|
		return err
 | 
						|
	}
 | 
						|
	var toUnmount []string
 | 
						|
	for _, m := range mounts {
 | 
						|
		if strings.HasPrefix(m.Mountpoint, tempMountLocation) {
 | 
						|
			toUnmount = append(toUnmount, m.Mountpoint)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	sort.Sort(sort.Reverse(sort.StringSlice(toUnmount)))
 | 
						|
	for _, path := range toUnmount {
 | 
						|
		if err := UnmountAll(path, flags); err != nil {
 | 
						|
			return err
 | 
						|
		}
 | 
						|
		if err := os.Remove(path); err != nil {
 | 
						|
			return err
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 |