func (t *Fs) wstat(rid string, d zx.Dir) error { f, err := t.walk(rid) if err != nil { return err } ud := d.UsrAttrs() d, err = f.Stat() if err != nil { return err } ai := t.ai if t.NoPermCheck { ai = nil } if !t.WstatAll || t.ai != nil { if err := d.CanWstat(ai, ud); err != nil { return err } } if wsf, ok := f.(Wstater); !ok { if _, ok := f.(Putter); !ok { return fmt.Errorf("%s: %s", rid, dbg.ErrPerm) } // ignore wstats if there's Put so that echo > file works. return nil } else { return wsf.Wstat(ud) } }