Spfcall * sp_clunk(Spreq *req, Spfcall *tc) { int n; Spconn *conn; Spfid *fid; Spfcall *rc; rc = NULL; conn = req->conn; fid = sp_fid_find(conn, tc->fid); if (!fid) { sp_werror(Eunknownfid, EIO); goto done; } else sp_fid_incref(fid); req->fid = fid; if (fid->type&Qtauth) { if (conn->srv->auth) { n = conn->srv->auth->clunk(fid); if (n) rc = sp_create_rclunk(); } else sp_werror(Ebadusefid, EIO); goto done; } if (fid->omode!=(u16)~0 && fid->omode==Orclose) { rc = (*conn->srv->remove)(fid); if (rc->type == Rerror) goto done; free(rc); rc = sp_create_rclunk(); } else rc = (*conn->srv->clunk)(fid); if (rc && rc->type == Rclunk) sp_fid_decref(fid); done: return rc; }
static Spfcall* npfs_clunk(Spfid *fid) { Fid *f; Spfcall *ret; f = fid->aux; ret = sp_create_rclunk(); // sp_fid_decref(fid); return ret; }