commit c35de20d746e80a7dcc398b588ac1286b4765ea4
parent 5772f41aabd4d84e6be16ce0387f129b04a4c818
Author: Matsuda Kenji <info@mtkn.jp>
Date: Thu, 19 Oct 2023 10:04:31 +0900
mv commands
Diffstat:
| D | cmd/disk.go | | | 50 | -------------------------------------------------- |
| D | cmd/iofs.go | | | 48 | ------------------------------------------------ |
| D | cmd/numfs.go | | | 208 | ------------------------------------------------------------------------------- |
3 files changed, 0 insertions(+), 306 deletions(-)
diff --git a/cmd/disk.go b/cmd/disk.go
@@ -1,50 +0,0 @@
-// Disk exports the file system on the disk.
-package main
-
-import (
- "flag"
- "fmt"
- "log"
- "net"
- "os"
-
- "lib9p"
- "lib9p/diskfs"
-)
-
-var dFlag = flag.Bool("D", false, "Prints chatty message to the stderr.")
-
-func main() {
- flag.Parse()
-
- if flag.NArg() != 1 {
- fmt.Fprintf(os.Stderr, "usage: %s [-D] <root>\n", os.Args[0])
- os.Exit(1)
- }
-
- listener, err := net.Listen("tcp", "127.0.0.1:5640")
- if err != nil {
- log.Fatalf("listen tcp: %v", err)
- }
-
- for {
- conn, err := listener.Accept()
- if err != nil {
- log.Printf("accept connection: %v", err)
- continue
- }
- disk, err := diskfs.Open(flag.Arg(0))
- if err != nil {
- log.Fatalf("open file tree.")
- }
- go handle(conn, disk)
- }
-}
-
-func handle(conn net.Conn, disk *diskfs.FS) {
- srv := lib9p.NewServer(disk, 8*1024, conn, conn)
- if *dFlag {
- srv.Chatty()
- }
- srv.Serve()
-}
diff --git a/cmd/iofs.go b/cmd/iofs.go
@@ -1,48 +0,0 @@
-// Disk exports the file system on the disk.
-package main
-
-import (
- "flag"
- "fmt"
- "log"
- "net"
- "os"
-
- "lib9p"
- "lib9p/iofs"
-)
-
-var dFlag = flag.Bool("D", false, "Prints chatty message to the stderr.")
-
-func main() {
- flag.Parse()
-
- if flag.NArg() != 1 {
- fmt.Fprintf(os.Stderr, "usage: %s [-D] <root>\n", os.Args[0])
- os.Exit(1)
- }
-
- listener, err := net.Listen("tcp", "127.0.0.1:5640")
- if err != nil {
- log.Fatalf("listen tcp: %v", err)
- }
-
- for {
- conn, err := listener.Accept()
- if err != nil {
- log.Printf("accept connection: %v", err)
- continue
- }
- dir := os.DirFS(flag.Arg(0))
- fsys := iofs.NewFS(dir)
- go handle(conn, fsys)
- }
-}
-
-func handle(conn net.Conn, disk *iofs.FS) {
- srv := lib9p.NewServer(disk, 8*1024, conn, conn)
- if *dFlag {
- srv.Chatty()
- }
- srv.Serve()
-}
diff --git a/cmd/numfs.go b/cmd/numfs.go
@@ -1,208 +0,0 @@
-package main
-
-import (
- "bytes"
- "flag"
- "fmt"
- "io"
- "io/fs"
- "log"
- "net"
- "os"
- "strings"
-
- "lib9p"
-)
-
-
-type numFS struct{
- root *numFile
-}
-
-
-func (fsys *numFS) String() string {
- if fsys.root == nil {
- return "<empty>"
- }
- return fsysString(fsys.root)
-}
-
-func fsysString(f *numFile) string {
- s := fmt.Sprintf("%d\n", f.id)
- for _, c := range f.children {
- cs := fsysString(c)
- ln := strings.Split(cs, "\n")
- for _, l := range ln {
- s += "\t" + l + "\n"
- }
- }
- return s
-}
-
-func (fsys *numFS) OpenFile(name string, omode lib9p.OpenMode, perm fs.FileMode) (lib9p.File, error) {
- if name == "." || name == "" {
- return fsys.root, nil
- }
- wname := strings.Split(name, "/")
- cwd := fsys.root
-L:
- for _, wn := range wname {
- for _, c := range cwd.children {
- if fmt.Sprintf("%d", c.id) == wn {
- cwd = c
- continue L
- }
- }
- return nil, fmt.Errorf("not found")
- }
- return cwd, nil
-}
-
-type numFile struct {
- fs *numFS
- id int
- reader *bytes.Reader
- children []*numFile
-}
-
-func (f *numFile) Fsys() lib9p.FS { return f.fs }
-
-func (f *numFile) Stat() (*lib9p.FileInfo, error) {
- var stat lib9p.Stat
- stat.Type = 0
- stat.Dev = 0
- if f.id == -1 {
- stat.Qid = lib9p.Qid{
- Type: lib9p.QTDIR,
- Vers: 0,
- Path: ^uint64(0),
- }
- } else {
- stat.Qid = lib9p.Qid{
- Type: lib9p.QTFILE,
- Vers: 0,
- Path: uint64(f.id),
- }
- }
- var mode lib9p.FileMode
- if f.id == -1 {
- mode |= lib9p.DMDIR
- }
- mode |= 0444
- stat.Mode = mode
- stat.Atime = 0
- stat.Mtime = 0
- var length int64
- if f.id == -1 {
- length = 0
- } else {
- length = f.reader.Size()
- }
- stat.Length = length
- stat.Name = fmt.Sprintf("%d", f.id)
- stat.Uid = "kenji"
- stat.Gid = "kenji"
- stat.Muid = "kenji"
- return &lib9p.FileInfo{stat}, nil
-}
-
-func (f *numFile) Qid() lib9p.Qid {
- var qid lib9p.Qid
- if f.id == -1 {
- qid = lib9p.Qid{
- Type: lib9p.QTDIR,
- Vers: 0,
- Path: ^uint64(0),
- }
- } else {
- qid = lib9p.Qid{
- Type: lib9p.QTFILE,
- Vers: 0,
- Path: uint64(f.id),
- }
- }
- return qid
-}
-
-func (f *numFile) Read(p []byte) (int, error) {
- if f.id == -1 {
- return 0, fmt.Errorf("is a directory")
- }
- return f.reader.Read(p)
-}
-
-func (f *numFile) ReadAt(p []byte, off int64) (n int, err error) {
- if f.id == -1 {
- return 0, fmt.Errorf("is a directory")
- }
- return f.reader.ReadAt(p, off)
-}
-
-func (f *numFile) ReadDir(n int) ([]*lib9p.DirEntry, error) {
- if f.id != -1 {
- return nil, fmt.Errorf("not a directory")
- }
- de := make([]*lib9p.DirEntry, len(f.children))
- for i, c := range f.children {
- s, err := c.Stat()
- if err != nil {
- return nil, fmt.Errorf("stat: %v", err)
- }
- de[i] = s
- }
- return de, nil
-}
-
-func (f *numFile) Close() error {
- if f.reader != nil {
- f.reader.Seek(0, io.SeekStart)
- }
- return nil
-}
-
-var dFlag = flag.Bool("D", false, "Prints chatty message to the stderr.")
-
-func main() {
- flag.Parse()
-
- if flag.NArg() != 0 {
- fmt.Fprintf(os.Stderr, "usage: %s [-D]\n", os.Args[0])
- os.Exit(1)
- }
-
- fsys := new(numFS)
- fsys.root = &numFile{
- fs: fsys,
- id: -1,
- reader: nil,
- children: []*numFile{
- &numFile{fsys, 0, bytes.NewReader([]byte("0\n")), nil},
- &numFile{fsys, 1, bytes.NewReader([]byte("1\n")), nil},
- &numFile{fsys, 2, bytes.NewReader([]byte("2\n")), nil},
- &numFile{fsys, 3, bytes.NewReader([]byte("3\n")), nil},
- },
- }
-
- listener, err := net.Listen("tcp", "127.0.0.1:5640")
- if err != nil {
- log.Fatalf("listen tcp: %v", err)
- }
-
- for {
- conn, err := listener.Accept()
- if err != nil {
- log.Printf("accept connection: %v", err)
- continue
- }
-
- go handle(conn, fsys)
- }
-}
-
-func handle(conn net.Conn, fs *numFS) {
- srv := lib9p.NewServer(fs, 8*1024, conn, conn)
- if *dFlag {
- srv.Chatty()
- }
- srv.Serve()
-}