summaryrefslogtreecommitdiff
path: root/libs/sftp/src/main/java
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2024-11-09 17:44:47 +0100
committerJoel Klinghed <the_jk@spawned.biz>2024-11-09 17:44:47 +0100
commit092f09aec7c447a8a93c1e5372634c54ad874ddd (patch)
tree528d654f0343899420957fd1d00e5d66ea50ee2b /libs/sftp/src/main/java
parentbd0228a55c08f9b0c7194be57ac261267ae02d65 (diff)
sftp: More symlink fixes
Diffstat (limited to 'libs/sftp/src/main/java')
-rw-r--r--libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpConnection.kt4
-rw-r--r--libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt2
2 files changed, 4 insertions, 2 deletions
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))