func (t *Fs) putCtl(datc <-chan []byte) error { ctl, err := nchan.String(datc) if err != nil { return fmt.Errorf("/Ctl: %s", err) } if cp, ok := t.root.(Ctler); ok { ok, err = cp.PutCtl(ctl) if ok { return err } } return t.Ctl(ctl) }
func (t *Fs) putCtl(datc <-chan []byte) (int, error) { // no lock on root.d (race) if !t.NoPermCheck && (!t.root.d.CanWalk(t.ai) || !ctldir.CanWrite(t.ai)) { return 0, fmt.Errorf("/Ctl: %s", dbg.ErrPerm) } ctl, err := nchan.String(datc) if err != nil { return 0, fmt.Errorf("/Ctl: %s", err) } if err := t.Ctl(ctl); err != nil { return 0, err } return len(ctl), nil }
func (fs *Cfs) putCtl(dc <-chan []byte) error { if !fs.NoPermCheck && !ctldir.CanWrite(fs.ai) { return fmt.Errorf("/Ctl: %s", dbg.ErrPerm) } ctl, err := nchan.String(dc) if err != nil { return fmt.Errorf("/Ctl: %s", err) } if strings.HasPrefix(ctl, "pass ") { nctl := ctl[5:] fs.dprintf("pass ctl <%s>\n", nctl) return zx.PutAll(fs.rfs, "/Ctl", nil, []byte(nctl)) } fs.dprintf("ctl <%s>\n", ctl) if ctl == "sync" { fs.cache.Sync(nil) return nil } return fs.Ctl(ctl) }