本文整理匯總了Golang中clive/zx.Dir.Long方法的典型用法代碼示例。如果您正苦於以下問題:Golang Dir.Long方法的具體用法?Golang Dir.Long怎麽用?Golang Dir.Long使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類clive/zx.Dir
的用法示例。
在下文中一共展示了Dir.Long方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: chkdirs
func chkdirs(t Fataler, fs zx.Tree, d zx.Dir, recur bool) {
if d["path"] == "" {
t.Fatalf("no path in <%s>", d)
}
if d["type"] != "d" {
return
}
dents, err := zx.GetDir(fs, d["path"])
if err != nil {
t.Fatalf("getdir: %s: %s", d["path"], err)
}
if d["size"] != fmt.Sprintf("%d", len(dents)) {
t.Logf("%s: size %s len(dents) %d", d["path"], d["size"], len(dents))
t.Logf("d: %s\n", d.Long())
for _, cd := range dents {
t.Logf("\t%s\n", cd.Long())
}
t.Fatalf("bad dir size")
}
if recur {
for _, cd := range dents {
chkdirs(t, fs, cd, true)
}
}
}
示例2: find
// d is a dup and can be changed.
func (f *mFile) find(d zx.Dir, p *pred.Pred, spref, dpref string, lvl int, c chan<- zx.Dir, ai *auth.Info) {
match, pruned, err := p.EvalAt(d, lvl)
f.dprintf("find at %d %s\n\t%v\n\t%v %v %v\n\n",
lvl, d.Long(), p, match, pruned, err)
if pruned {
if !match {
d["err"] = "pruned"
}
c <- d
return
}
if d["type"] == "d" && err == nil {
f.mlk.Lock()
if !f.t.NoPermCheck && !f.d.CanWalk(ai) {
err = dbg.ErrPerm
}
f.mlk.Unlock()
}
if err != nil {
d["err"] = err.Error()
c <-d
return
}
if d["rm"] != "" {
return
}
if match {
if ok := c <- d; !ok {
return
}
}
if d["type"] != "d" {
return
}
f.clk.Lock()
child := make([]*mFile, len(f.child))
copy(child, f.child)
f.clk.Unlock()
if f.name == "/" {
nc := []*mFile{
&mFile{name: "Ctl", d: ctldir.Dup(), t: f.t},
}
nc[0].d["tpath"] = f.t.path
child = append(nc, child...)
}
for _, cf := range child {
cf.mlk.Lock()
cd := cf.d.Dup()
cf.mlk.Unlock()
// fmt.Printf("child %s\n", cd)
if cd["rm"] != "" {
continue
}
if spref != dpref {
cpath := cd["path"]
suff := zx.Suffix(cpath, spref)
cd["path"] = zx.Path(dpref, suff)
}
cf.find(cd, p, spref, dpref, lvl+1, c, ai)
}
}
func (t *Fs) Find(rid, fpred, spref, dpref string, depth int) <-chan zx.Dir {
t.dprintf("find %s '%s' '%s' '%s' %d\n", rid, fpred, spref, dpref, depth)
cs := t.IOstats.NewCall(zx.Sfind)
dc := make(chan zx.Dir)
go func() {
rid, err := zx.AbsPath(rid)
if err != nil {
cs.End(err != nil)
t.dprintf("find %s: %s\n", rid, err)
close(dc, err)
return
}
f, _, err := t.walk(rid, nil)
if err != nil {
cs.End(err != nil)
t.dprintf("find %s: %s\n", rid, err)
close(dc, err)
return
}
p, err := pred.New(fpred)
if err != nil {
cs.End(err != nil)
t.dprintf("find %s: %s\n", rid, err)
close(dc, err)
return
}
cs.Sending()
f.mlk.Lock()
d := f.d.Dup()
f.mlk.Unlock()
if spref != dpref {
suff := zx.Suffix(rid, spref)
d["path"] = zx.Path(dpref, suff)
}
f.find(d, p, spref, dpref, depth, dc, t.ai)
cs.End(err != nil)
t.dprintf("find %s: ok\n", rid)
//.........這裏部分代碼省略.........