diff options
Diffstat (limited to 'src/main/kotlin/Connection.kt')
-rw-r--r-- | src/main/kotlin/Connection.kt | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/main/kotlin/Connection.kt b/src/main/kotlin/Connection.kt index 659dd41..cb93533 100644 --- a/src/main/kotlin/Connection.kt +++ b/src/main/kotlin/Connection.kt @@ -1,5 +1,6 @@ import except.MsizeValueTooBigException import except.RErrorException +import except.UnaccessibleFileException import except.UnknownVersionException import java.io.IOException import java.math.BigInteger @@ -141,7 +142,7 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { this.pathInfo.addPath(PathInfo.Path(aname.split("/"), fid, qid)) } - override fun walk(fid: UInt, newfid: UInt, wname: List<String>): String? { + override fun walk(fid: UInt, newfid: UInt, wname: List<String>) { val nwname = wname.size val omsg = OutMessage(NinePMessageType.TWALK, this.tagGen.generate(), listOf("fid", "newfid", "nwname"), mapOf( @@ -157,16 +158,12 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { for (wn in wname) { // write wname elements OutMessage.writeString(this.tl, wn) } - val checkErr = checkedInMessage(omsg.tag) - if (checkErr.first != null) { - return checkErr.first - } - val imsg = checkErr.second!! + val imsg = checkedInMessage(omsg.tag) imsg.applyField(InMessage.Field("nwqid", InMessage.Field.Type.INTEGER, 2u)) val nwqid = imsg.fieldsInt["nwqid"]!!.toInt() if (nwqid < nwname) { - return "cannot access ${wname.slice(0..nwqid).joinToString(separator = "/")}" + throw UnaccessibleFileException(wname.slice(0..nwqid).joinToString(separator = "/")) } imsg.applyField(InMessage.Field("qids", InMessage.Field.Type.RAW, (nwqid * 13).toUInt())) val rawQids = imsg.fieldsRaw["qids"]!! @@ -183,7 +180,6 @@ class Connection(transLay: TransportLayer) : ProtocolTranslator { } this.pathInfo.removeFID(fid) this.pathInfo.addPath(PathInfo.Path(wname, newfid, qids.last())) - return null } override fun open(path: String) { |