summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/MANPAGE-STATFS.md64
-rwxr-xr-xbuild.bash5
-rw-r--r--contrib/statfs/statfs.go7
3 files changed, 65 insertions, 11 deletions
diff --git a/Documentation/MANPAGE-STATFS.md b/Documentation/MANPAGE-STATFS.md
index 1d77802..c519f4b 100644
--- a/Documentation/MANPAGE-STATFS.md
+++ b/Documentation/MANPAGE-STATFS.md
@@ -5,26 +5,78 @@
NAME
====
-statfs - dump the statfs information for PATH to console in JSON format
+statfs - dump the statfs(2) information for PATH to console in JSON format.
SYNOPSIS
========
-#### Examine encrypted file/directory
statfs PATH
DESCRIPTION
===========
-There are no options to this command.
+The statfs(2) system call returns information about a mounted filesystem
+in a `statfs_t` structure. This tool dumps this information in JSON format.
+It is developed as part of gocryptfs and written in Go.
+
+The `statfs_t` structure is architecture-dependent. On amd64 it looks like this:
+
+```
+type Statfs_t struct {
+ Type int64
+ Bsize int64
+ Blocks uint64
+ Bfree uint64
+ Bavail uint64
+ Files uint64
+ Ffree uint64
+ Fsid struct {
+ Val [2]int32
+ }
+ Namelen int64
+ Frsize int64
+ Flags int64
+ Spare [4]int64
+}
+```
+
+See the statfs(2) man page for the meaning of these fields, and note
+that the field names here are acc. to the Go `golang.org/x/sys/unix`
+naming convention, and slightly different than in C.
EXAMPLES
========
-Examine a directory entry:
+Get the statfs(2) information for /tmp:
- statfs myfs/mCXnISiv7nEmyc0glGuhTQ
+```
+$ statfs /tmp
+{
+ "Type": 16914836,
+ "Bsize": 4096,
+ "Blocks": 3067428,
+ "Bfree": 3067411,
+ "Bavail": 3067411,
+ "Files": 3067428,
+ "Ffree": 3067381,
+ "Fsid": {
+ "Val": [
+ 0,
+ 0
+ ]
+ },
+ "Namelen": 255,
+ "Frsize": 4096,
+ "Flags": 38,
+ "Spare": [
+ 0,
+ 0,
+ 0,
+ 0
+ ]
+}
+```
SEE ALSO
========
-gocryptfs(1) gocryptfs-xray(1)
+statfs(2) gocryptfs(1)
diff --git a/build.bash b/build.bash
index 5f801a2..7a5ac6f 100755
--- a/build.bash
+++ b/build.bash
@@ -87,10 +87,11 @@ if [[ -n ${LDFLAGS:-} ]] ; then
GO_LDFLAGS="$GO_LDFLAGS \"-extldflags=$LDFLAGS\""
fi
-# Actual "go build" call
+# Actual "go build" call for gocryptfs
go build "-ldflags=$GO_LDFLAGS" "-gcflags=$TRIM" "-asmflags=$TRIM" "$@"
-
+# Additional binaries
(cd gocryptfs-xray; go build "-ldflags=$GO_LDFLAGS" "-gcflags=$TRIM" "-asmflags=$TRIM" "$@")
+(cd contrib/statfs; go build "-ldflags=$GO_LDFLAGS" "-gcflags=$TRIM" "-asmflags=$TRIM" "$@")
./gocryptfs -version
diff --git a/contrib/statfs/statfs.go b/contrib/statfs/statfs.go
index 5dcbd07..163d95a 100644
--- a/contrib/statfs/statfs.go
+++ b/contrib/statfs/statfs.go
@@ -5,7 +5,8 @@ import (
"flag"
"fmt"
"os"
- "syscall"
+
+ "golang.org/x/sys/unix"
)
const (
@@ -23,8 +24,8 @@ func main() {
flag.Usage()
}
path := flag.Arg(0)
- var st syscall.Statfs_t
- err := syscall.Statfs(path, &st)
+ var st unix.Statfs_t
+ err := unix.Statfs(path, &st)
if err != nil {
fmt.Fprintf(os.Stderr, "statfs syscall returned error: %v\n", err)
os.Exit(2)