From 97408589e18ecebef7fa380e019c43f5a24e1be7 Mon Sep 17 00:00:00 2001 From: Edoardo La Greca Date: Fri, 8 Aug 2025 16:38:42 +0200 Subject: change walk to use exceptions instead of error strings --- src/main/kotlin/Connection.kt | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/main/kotlin/Connection.kt') 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? { + override fun walk(fid: UInt, newfid: UInt, wname: List) { 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) { -- cgit v1.2.3