diff --git a/starter/go.mod b/starter/go.mod index 4d152ee..b79e29f 100644 --- a/starter/go.mod +++ b/starter/go.mod @@ -1,3 +1,3 @@ module lcthw.dev/go/go-coreutils/XX -go 1.24.2 +go 1.25.3 diff --git a/stat/.gitignore b/stat/.gitignore new file mode 100644 index 0000000..199505e --- /dev/null +++ b/stat/.gitignore @@ -0,0 +1,2 @@ +stat +stat.exe diff --git a/stat/Makefile b/stat/Makefile new file mode 100644 index 0000000..bea7546 --- /dev/null +++ b/stat/Makefile @@ -0,0 +1,4 @@ + + +build: + go build . diff --git a/stat/go.mod b/stat/go.mod new file mode 100644 index 0000000..a8f9c9a --- /dev/null +++ b/stat/go.mod @@ -0,0 +1,3 @@ +module lcthw.dev/go/go-coreutils/stat + +go 1.25.3 diff --git a/stat/main.go b/stat/main.go new file mode 100644 index 0000000..94f75d7 --- /dev/null +++ b/stat/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "fmt" + "os" + "flag" + "log" + "io/fs" +) + +func PrintStat(stat fs.FileInfo) { + fmt.Printf("File: %s\nSize: %d\nAccess: %v\nModify: %v", + stat.Name(), + stat.Size(), + stat.Mode(), + stat.ModTime()) +} + +func main() { + flag.Parse() + files := flag.Args() + + for _, fname := range files { + f, err := os.Open(fname) + if err != nil { log.Fatal(err) } + + stats, err := f.Stat() + if err != nil { log.Fatal(err) } + + PrintStat(stats) + } +}