From 092f09aec7c447a8a93c1e5372634c54ad874ddd Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sat, 9 Nov 2024 17:44:47 +0100 Subject: sftp: More symlink fixes --- .../src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt | 4 +++- libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'libs') diff --git a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt index 6669e13..a6e0ae9 100644 --- a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt +++ b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt @@ -53,7 +53,9 @@ internal class SftpConnection(uri: Uri, credentials: SftpCredentials, hostsStora val linkPath = PathUtils.join(baseDir, path) val target = sftpSession?.readlink(linkPath) ?: return null val parentPath = PathUtils.dirname(linkPath) - return PathUtils.relativeTo(parentPath, target) + val relativeTarget = PathUtils.relativeTo(parentPath, target) + if (relativeTarget == ".") return "../${PathUtils.basename(target)}" + return relativeTarget } fun symlink(target: String, rawTarget: Boolean, path: String): Boolean { diff --git a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt index 161b5c1..b51f2f9 100644 --- a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt +++ b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt @@ -48,7 +48,7 @@ internal class SftpLink( override fun resolve(): Link.LinkTarget { val (newPath, firstTarget, entry) = doResolve() - if (entry == null) return Link.NoTarget(newPath) + if (entry == null) return Link.NoTarget(firstTarget) return when (entry.type) { NativeSftp.DirEntryType.DIR -> Link.DirectoryTarget(firstTarget, SftpDirectory(conn, newPath, entry.name)) -- cgit v1.2.3-70-g09d2