diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2024-09-25 21:21:13 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2024-09-25 21:21:13 +0200 |
| commit | 91b08030619e96257c8a9a95824e5a213be28142 (patch) | |
| tree | 94bd03fb37882b35541a57a5d1b325853a243b52 /libs/samba/src/main/java/org/the_jk | |
| parent | 5d68a40cab717fa7562c08dbf2eb9a4394f2e7a5 (diff) | |
samba: Remove untested symlink code
Not been able to test the symlink code (as it is SMB1 only), instead
of having a lot of (possibly, most likely) broken code that might
be used by someone, remove it all.
Diffstat (limited to 'libs/samba/src/main/java/org/the_jk')
4 files changed, 4 insertions, 94 deletions
diff --git a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/NativeSamba.kt b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/NativeSamba.kt index c951d37..590fab8 100644 --- a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/NativeSamba.kt +++ b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/NativeSamba.kt @@ -26,7 +26,6 @@ internal object NativeSamba { fun makeDir(path: String): Boolean fun removeDir(path: String): Boolean fun unlink(path: String): Boolean - fun readLink(path: String): String? fun openFile(path: String, mode: OpenMode): File? } @@ -37,7 +36,6 @@ internal object NativeSamba { enum class DirEntryType { DIR, FILE, - LINK, } @Keep @@ -114,10 +112,6 @@ internal object NativeSamba { return nativeContextUnlink(ptr, path) } - override fun readLink(path: String): String? { - return nativeContextReadLink(ptr, path) - } - override fun openFile(path: String, mode: NativeSamba.OpenMode): File? { val file = nativeContextOpenFile(ptr, path, mode.value) return if (file != 0L) NativeFile(path, file) else null @@ -181,7 +175,6 @@ internal object NativeSamba { when (type) { 0 -> DirEntryType.DIR 1 -> DirEntryType.FILE - 2 -> DirEntryType.LINK else -> throw IllegalArgumentException("Unknown type: $type") }, size = size.toULong(), @@ -198,7 +191,6 @@ internal object NativeSamba { private external fun nativeContextMakeDir(ptr: Long, path: String): Boolean private external fun nativeContextRemoveDir(ptr: Long, path: String): Boolean private external fun nativeContextUnlink(ptr: Long, path: String): Boolean - private external fun nativeContextReadLink(otr: Long, path: String): String? private external fun nativeContextOpenFile(ptr: Long, path: String, mode: Int): Long private external fun nativeUrlDestroy(ptr: Long) diff --git a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt index a645804..7378ab5 100644 --- a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt +++ b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaConnection.kt @@ -37,9 +37,6 @@ internal class SambaConnection(uri: String, credentials: SambaCredentials) { fun unlink(path: String): Boolean = connected && context.unlink(join(url!!.path(), path)) - fun readLink(path: String): String? = - if (connected) context.readLink(join(url!!.path(), path)) else null - fun openFile(path: String, read: NativeSamba.OpenMode): NativeSamba.File? = if (connected) context.openFile(join(url!!.path(), path), read) else null diff --git a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt index fc5b290..67228a4 100644 --- a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt +++ b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaDirectory.kt @@ -69,16 +69,13 @@ internal open class SambaDirectory( } override fun modifiableOpenLink(name: String): ModifiableLink? { - val newPath = SambaConnection.join(path, name) - val entry = conn.entry(newPath) ?: return null - if (entry.type != NativeSamba.DirEntryType.LINK) return null - return SambaLink(conn, newPath, name) + return null } override fun modifiableList(): ModifiableDirectory.Content { val directories = mutableListOf<ModifiableDirectory>() val files = mutableListOf<ModifiableFile>() - val links = mutableListOf<ModifiableLink>() + val links = emptyList<ModifiableLink>() val dir = conn.openDir(path) if (dir != null) { dir.list().forEach { entry -> @@ -90,9 +87,6 @@ internal open class SambaDirectory( NativeSamba.DirEntryType.FILE -> { files.add(SambaFile(conn, entryPath, entry.name, entry.size, entry.lastModified)) } - NativeSamba.DirEntryType.LINK -> { - links.add(SambaLink(conn, entryPath, entry.name)) - } } } dir.destroy() @@ -138,8 +132,7 @@ internal open class SambaDirectory( dir.list().forEach { entry -> val entryPath = SambaConnection.join(removePath, entry.name) if (!when (entry.type) { - NativeSamba.DirEntryType.FILE, - NativeSamba.DirEntryType.LINK, + NativeSamba.DirEntryType.FILE -> conn.unlink(entryPath) NativeSamba.DirEntryType.DIR -> removeRecursive(entryPath) @@ -161,10 +154,7 @@ internal open class SambaDirectory( } override fun removeLink(name: String): Boolean { - val removePath = SambaConnection.join(path, name) - val entry = conn.entry(removePath) ?: return false - if (entry.type != NativeSamba.DirEntryType.LINK) return false - return conn.unlink(removePath) + return false } override fun openDir(name: String) = modifiableOpenDir(name) diff --git a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaLink.kt b/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaLink.kt deleted file mode 100644 index a9e6f04..0000000 --- a/libs/samba/src/main/java/org/the_jk/cleversync/io/samba/SambaLink.kt +++ /dev/null @@ -1,69 +0,0 @@ -package org.the_jk.cleversync.io.samba - -import org.the_jk.cleversync.io.Directory -import org.the_jk.cleversync.io.File -import org.the_jk.cleversync.io.Link -import org.the_jk.cleversync.io.ModifiableLink -import java.io.IOException - -internal class SambaLink( - private val conn: SambaConnection, - private val path: String, - override val name: String, -) : ModifiableLink { - override fun modifiableResolve(): ModifiableLink.ModifiableLinkTarget { - val (newPath, entry) = doResolve() - if (entry == null) return ModifiableLink.NoTarget - return when (entry.type) { - NativeSamba.DirEntryType.DIR -> - ModifiableLink.ModifiableDirectoryTarget(SambaDirectory(conn, newPath, entry.name)) - NativeSamba.DirEntryType.FILE -> - ModifiableLink.ModifiableFileTarget( - SambaFile(conn, newPath, entry.name, entry.size, entry.lastModified), - ) - NativeSamba.DirEntryType.LINK -> - ModifiableLink.NoTarget - } - } - - override fun target(directory: Directory) { - throw IOException("Unsupported operation") - } - - override fun target(file: File) { - throw IOException("Unsupported operation") - } - - override fun target(name: String) { - throw IOException("Unsupported operation") - } - - override fun resolve(): Link.LinkTarget { - val (newPath, entry) = doResolve() - if (entry == null) return Link.NoTarget - return when (entry.type) { - NativeSamba.DirEntryType.DIR -> - Link.DirectoryTarget(SambaDirectory(conn, newPath, entry.name)) - NativeSamba.DirEntryType.FILE -> - Link.FileTarget(SambaFile(conn, newPath, entry.name, entry.size, entry.lastModified)) - NativeSamba.DirEntryType.LINK -> - Link.NoTarget - } - } - - override fun equals(other: Any?) = other is SambaLink && other.conn == conn && other.path == path - override fun hashCode() = path.hashCode() - override fun toString() = "$conn/$path" - - private fun doResolve(): Pair<String, NativeSamba.DirEntry?> { - var linkPath = path - var entry: NativeSamba.DirEntry? = null - while (true) { - val target = conn.readLink(linkPath) ?: break - linkPath = SambaConnection.join(linkPath, target) - entry = conn.entry(linkPath) ?: break - if (entry.type != NativeSamba.DirEntryType.LINK) break - } - return linkPath to entry - } -} |
