github.com/dennwc/btrfs@v0.0.0-20221026161108-3097362dc072/mtab/mtab.go (about)

     1  // Package mtab contains tools to work with /etc/mtab file.
     2  package mtab
     3  
     4  import (
     5  	"bufio"
     6  	"io"
     7  	"os"
     8  	"strings"
     9  )
    10  
    11  type MountPoint struct {
    12  	Dev   string
    13  	Mount string
    14  	Type  string
    15  	Opts  string
    16  }
    17  
    18  // Mounts returns a list of mount point from /etc/mtab.
    19  func Mounts() ([]MountPoint, error) {
    20  	file, err := os.Open("/etc/mtab")
    21  	if err != nil {
    22  		return nil, err
    23  	}
    24  	defer file.Close()
    25  	r := bufio.NewReader(file)
    26  	var out []MountPoint
    27  	for {
    28  		line, err := r.ReadString('\n')
    29  		if err == io.EOF {
    30  			break
    31  		} else if err != nil {
    32  			return nil, err
    33  		}
    34  		fields := strings.Fields(line)
    35  		out = append(out, MountPoint{
    36  			Dev:   fields[0],
    37  			Mount: fields[1],
    38  			Type:  fields[2],
    39  			Opts:  fields[3],
    40  		})
    41  	}
    42  	return out, nil
    43  }