diff --git a/src/main/resources/assets/opencomputers/loot/OpenOS/lib/filesystem.lua b/src/main/resources/assets/opencomputers/loot/OpenOS/lib/filesystem.lua index 83d528124..0ab4e4e63 100644 --- a/src/main/resources/assets/opencomputers/loot/OpenOS/lib/filesystem.lua +++ b/src/main/resources/assets/opencomputers/loot/OpenOS/lib/filesystem.lua @@ -157,7 +157,10 @@ end function filesystem.isLink(path) local node, rest, vnode, vrest = findNode(filesystem.path(path)) - return not vrest and vnode.links[filesystem.name(path)] ~= nil + if not vrest and vnode.links[filesystem.name(path)] ~= nil then + return true, vnode.links[filesystem.name(path)] + end + return false end function filesystem.link(target, linkpath) diff --git a/src/main/scala/li/cil/oc/server/driver/Registry.scala b/src/main/scala/li/cil/oc/server/driver/Registry.scala index 6cf2b6fda..c4680dcb1 100644 --- a/src/main/scala/li/cil/oc/server/driver/Registry.scala +++ b/src/main/scala/li/cil/oc/server/driver/Registry.scala @@ -101,6 +101,7 @@ private[oc] object Registry extends api.detail.DriverAPI { case arg: Array[_] => convertList(arg, arg.zipWithIndex.iterator, memo) case arg: Product => convertList(arg, arg.productIterator.zipWithIndex, memo) case arg: Seq[_] => convertList(arg, arg.zipWithIndex.iterator, memo) + case arg: java.lang.Iterable[_] => convertList(arg, arg.zipWithIndex.iterator, memo) case arg: Map[_, _] => convertMap(arg, arg, memo) case arg: mutable.Map[_, _] => convertMap(arg, arg.toMap, memo) @@ -116,6 +117,11 @@ private[oc] object Registry extends api.detail.DriverAPI { memo += arg -> null null } + else if (converted.size == 1 && converted.containsKey("oc:flatten")) { + val value = converted.get("oc:flatten") + memo += arg -> value // Update memoization map. + value + } else { // This is a little nasty but necessary because we need to keep the // 'converted' value up-to-date for any reference created to it in