diff options
Diffstat (limited to 'libs/sftp/src/main/java/org')
| -rw-r--r-- | libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpDirectory.kt | 3 | ||||
| -rw-r--r-- | libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpLink.kt | 2 |
2 files changed, 5 insertions, 0 deletions
diff --git a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpDirectory.kt b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpDirectory.kt index 90a3127..f1ae513 100644 --- a/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpDirectory.kt +++ b/libs/sftp/src/main/java/org/the_jk/cleversync/io/sftp/SftpDirectory.kt @@ -12,6 +12,7 @@ import org.the_jk.cleversync.io.ModifiableDirectory import org.the_jk.cleversync.io.ModifiableFile import org.the_jk.cleversync.io.ModifiableLink import java.io.IOException +import java.nio.file.FileAlreadyExistsException import java.time.Instant import kotlin.time.Duration.Companion.seconds @@ -111,6 +112,8 @@ internal open class SftpDirectory( override fun createFile(name: String): ModifiableFile { val newPath = PathUtils.join(path, name) + val entry = conn.entry(newPath, followLink = false) + if (entry != null) throw FileAlreadyExistsException(name) return SftpFile(conn, newPath, name, 0UL, Instant.EPOCH, Instant.EPOCH) } 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 a922e26..0766f1a 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 @@ -40,6 +40,8 @@ internal class SftpLink( } private fun target(name: String, rawTarget: Boolean) { + // conn.symlink fails if path already exists + conn.unlink(path) if (!conn.symlink(name, rawTarget, path)) throw IOException(conn.error) } |
