minikube/third_party/go9p/fmt.go

162 lines
4.0 KiB
Go

// Copyright 2009 The Go9p Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package go9p
import "fmt"
func permToString(perm uint32) string {
ret := ""
if perm&DMDIR != 0 {
ret += "d"
}
if perm&DMAPPEND != 0 {
ret += "a"
}
if perm&DMAUTH != 0 {
ret += "A"
}
if perm&DMEXCL != 0 {
ret += "l"
}
if perm&DMTMP != 0 {
ret += "t"
}
if perm&DMDEVICE != 0 {
ret += "D"
}
if perm&DMSOCKET != 0 {
ret += "S"
}
if perm&DMNAMEDPIPE != 0 {
ret += "P"
}
if perm&DMSYMLINK != 0 {
ret += "L"
}
ret += fmt.Sprintf("%o", perm&0777)
return ret
}
func (qid *Qid) String() string {
b := ""
if qid.Type&QTDIR != 0 {
b += "d"
}
if qid.Type&QTAPPEND != 0 {
b += "a"
}
if qid.Type&QTAUTH != 0 {
b += "A"
}
if qid.Type&QTEXCL != 0 {
b += "l"
}
if qid.Type&QTTMP != 0 {
b += "t"
}
if qid.Type&QTSYMLINK != 0 {
b += "L"
}
return fmt.Sprintf("(%x %x '%s')", qid.Path, qid.Version, b)
}
func (d *Dir) String() string {
ret := fmt.Sprintf("'%s' '%s' '%s' '%s' q ", d.Name, d.Uid, d.Gid, d.Muid)
ret += d.Qid.String() + " m " + permToString(d.Mode)
ret += fmt.Sprintf(" at %d mt %d l %d t %d d %d", d.Atime, d.Mtime,
d.Length, d.Type, d.Dev)
/* dotu ? */
ret += " ext " + d.Ext
return ret
}
func (fc *Fcall) String() string {
ret := ""
switch fc.Type {
default:
ret = fmt.Sprintf("invalid call: %d", fc.Type)
case Tversion:
ret = fmt.Sprintf("Tversion tag %d msize %d version '%s'", fc.Tag, fc.Msize, fc.Version)
case Rversion:
ret = fmt.Sprintf("Rversion tag %d msize %d version '%s'", fc.Tag, fc.Msize, fc.Version)
case Tauth:
ret = fmt.Sprintf("Tauth tag %d afid %d uname '%s' nuname %d aname '%s'",
fc.Tag, fc.Afid, fc.Uname, fc.Unamenum, fc.Aname)
case Rauth:
ret = fmt.Sprintf("Rauth tag %d aqid %v", fc.Tag, &fc.Qid)
case Rattach:
ret = fmt.Sprintf("Rattach tag %d aqid %v", fc.Tag, &fc.Qid)
case Tattach:
ret = fmt.Sprintf("Tattach tag %d fid %d afid %d uname '%s' nuname %d aname '%s'",
fc.Tag, fc.Fid, fc.Afid, fc.Uname, fc.Unamenum, fc.Aname)
case Tflush:
ret = fmt.Sprintf("Tflush tag %d oldtag %d", fc.Tag, fc.Oldtag)
case Rerror:
ret = fmt.Sprintf("Rerror tag %d ename '%s' ecode %d", fc.Tag, fc.Error, fc.Errornum)
case Twalk:
ret = fmt.Sprintf("Twalk tag %d fid %d newfid %d ", fc.Tag, fc.Fid, fc.Newfid)
for i := 0; i < len(fc.Wname); i++ {
ret += fmt.Sprintf("%d:'%s' ", i, fc.Wname[i])
}
case Rwalk:
ret = fmt.Sprintf("Rwalk tag %d ", fc.Tag)
for i := 0; i < len(fc.Wqid); i++ {
ret += fmt.Sprintf("%v ", &fc.Wqid[i])
}
case Topen:
ret = fmt.Sprintf("Topen tag %d fid %d mode %x", fc.Tag, fc.Fid, fc.Mode)
case Ropen:
ret = fmt.Sprintf("Ropen tag %d qid %v iounit %d", fc.Tag, &fc.Qid, fc.Iounit)
case Rcreate:
ret = fmt.Sprintf("Rcreate tag %d qid %v iounit %d", fc.Tag, &fc.Qid, fc.Iounit)
case Tcreate:
ret = fmt.Sprintf("Tcreate tag %d fid %d name '%s' perm ", fc.Tag, fc.Fid, fc.Name)
ret += permToString(fc.Perm)
ret += fmt.Sprintf(" mode %x ", fc.Mode)
case Tread:
ret = fmt.Sprintf("Tread tag %d fid %d offset %d count %d", fc.Tag, fc.Fid, fc.Offset, fc.Count)
case Rread:
ret = fmt.Sprintf("Rread tag %d count %d", fc.Tag, fc.Count)
case Twrite:
ret = fmt.Sprintf("Twrite tag %d fid %d offset %d count %d", fc.Tag, fc.Fid, fc.Offset, fc.Count)
case Rwrite:
ret = fmt.Sprintf("Rwrite tag %d count %d", fc.Tag, fc.Count)
case Tclunk:
ret = fmt.Sprintf("Tclunk tag %d fid %d", fc.Tag, fc.Fid)
case Rclunk:
ret = fmt.Sprintf("Rclunk tag %d", fc.Tag)
case Tremove:
ret = fmt.Sprintf("Tremove tag %d fid %d", fc.Tag, fc.Fid)
case Tstat:
ret = fmt.Sprintf("Tstat tag %d fid %d", fc.Tag, fc.Fid)
case Rstat:
ret = fmt.Sprintf("Rstat tag %d st (%v)", fc.Tag, &fc.Dir)
case Twstat:
ret = fmt.Sprintf("Twstat tag %d fid %d st (%v)", fc.Tag, fc.Fid, &fc.Dir)
case Rflush:
ret = fmt.Sprintf("Rflush tag %d", fc.Tag)
case Rremove:
ret = fmt.Sprintf("Rremove tag %d", fc.Tag)
case Rwstat:
ret = fmt.Sprintf("Rwstat tag %d", fc.Tag)
}
return ret
}