// Creates a fid for the specified user that points to the root // of the file server's file tree. Returns a Fid pointing to the root, // if successful, or an Error. func (clnt *Clnt) Attach(afid *Fid, user p.User, aname string) (*Fid, error) { var afno uint32 if afid != nil { afno = afid.Fid } else { afno = p.NOFID } fid := clnt.FidAlloc() tc := clnt.NewFcall() err := p.PackTattach(tc, fid.Fid, afno, user.Name(), aname, uint32(user.Id()), clnt.Dotu) if err != nil { return nil, err } rc, err := clnt.Rpc(tc) if err != nil { return nil, err } fid.Qid = rc.Qid fid.User = user fid.walked = true return fid, nil }
func (tag *Tag) Attach(fid, afid *Fid, user p.User, aname string) error { var afno uint32 if afid != nil { afno = afid.Fid } else { afno = p.NOFID } req := tag.reqAlloc() req.fid = fid err := p.PackTattach(req.Tc, fid.Fid, afno, user.Name(), aname, uint32(user.Id()), tag.clnt.Dotu) if err != nil { return err } fid.User = user return tag.clnt.Rpcnb(req) }