From 17eec5f6aabcf4c8ed90830bf0dc8cc3997f0a2b Mon Sep 17 00:00:00 2001 From: Ahmad Ansori Palembani Date: Thu, 19 Dec 2024 07:18:14 +0700 Subject: [PATCH] revert: "refactor(archive): Move stuff around" This reverts commit e19d048bb157898553f7f256cd4110140fb13301. --- .../core/archive/AndroidArchiveInputStream.kt | 2 +- .../yokai/core/archive/AndroidArchiveReader.kt | 14 ++++++-------- .../yokai/core/archive/ArchiveInputStream.kt | 4 +--- .../kotlin/yokai/core/archive/ArchiveReader.kt | 13 +++---------- 4 files changed, 11 insertions(+), 22 deletions(-) diff --git a/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveInputStream.kt b/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveInputStream.kt index bb382a346e..fb5426f46a 100644 --- a/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveInputStream.kt +++ b/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveInputStream.kt @@ -53,7 +53,7 @@ class AndroidArchiveInputStream(buffer: Long, size: Long) : ArchiveInputStream() Archive.readFree(archive) } - override fun getNextEntry() = Archive.readNextHeader(archive).takeUnless { it == 0L }?.let { entry -> + fun getNextEntry() = Archive.readNextHeader(archive).takeUnless { it == 0L }?.let { entry -> val name = ArchiveEntry.pathnameUtf8(entry) ?: ArchiveEntry.pathname(entry)?.decodeToString() ?: return null val isFile = ArchiveEntry.filetype(entry) == ArchiveEntry.AE_IFREG ArchiveEntry(name, isFile) diff --git a/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveReader.kt b/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveReader.kt index f9194e53c6..8309e9b1a6 100644 --- a/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveReader.kt +++ b/core/src/androidMain/kotlin/yokai/core/archive/AndroidArchiveReader.kt @@ -9,17 +9,15 @@ import eu.kanade.tachiyomi.util.system.openFileDescriptor import me.zhanghai.android.libarchive.ArchiveException import java.io.InputStream -class AndroidArchiveReader(pfd: ParcelFileDescriptor) : ArchiveReader() { - override val size = - pfd.statSize - override val address = - Os.mmap(0, size, OsConstants.PROT_READ, OsConstants.MAP_PRIVATE, pfd.fileDescriptor, 0) +class AndroidArchiveReader(pfd: ParcelFileDescriptor) : ArchiveReader { + val size = pfd.statSize + val address = Os.mmap(0, size, OsConstants.PROT_READ, OsConstants.MAP_PRIVATE, pfd.fileDescriptor, 0) - override fun createInputStream(address: Long, size: Long): ArchiveInputStream = - AndroidArchiveInputStream(address, size) + override fun useEntries(block: (Sequence) -> T): T = + AndroidArchiveInputStream(address, size).use { block(generateSequence { it.getNextEntry() }) } override fun getInputStream(entryName: String): InputStream? { - val archive = createInputStream(address, size) + val archive = AndroidArchiveInputStream(address, size) try { while (true) { val entry = archive.getNextEntry() ?: break diff --git a/core/src/androidMain/kotlin/yokai/core/archive/ArchiveInputStream.kt b/core/src/androidMain/kotlin/yokai/core/archive/ArchiveInputStream.kt index 1da5acfe4a..6a9cd0185b 100644 --- a/core/src/androidMain/kotlin/yokai/core/archive/ArchiveInputStream.kt +++ b/core/src/androidMain/kotlin/yokai/core/archive/ArchiveInputStream.kt @@ -3,6 +3,4 @@ package yokai.core.archive import java.io.InputStream // TODO: Use Okio's Source -abstract class ArchiveInputStream : InputStream() { - abstract fun getNextEntry(): ArchiveEntry? -} +abstract class ArchiveInputStream : InputStream() diff --git a/core/src/androidMain/kotlin/yokai/core/archive/ArchiveReader.kt b/core/src/androidMain/kotlin/yokai/core/archive/ArchiveReader.kt index 0eb3669d49..00d646f3a7 100644 --- a/core/src/androidMain/kotlin/yokai/core/archive/ArchiveReader.kt +++ b/core/src/androidMain/kotlin/yokai/core/archive/ArchiveReader.kt @@ -3,14 +3,7 @@ package yokai.core.archive import java.io.Closeable import java.io.InputStream -abstract class ArchiveReader : Closeable { - abstract val address: Long - abstract val size: Long - - abstract fun createInputStream(address: Long, size: Long): ArchiveInputStream - - inline fun useEntries(block: (Sequence) -> T): T = - createInputStream(address, size).use { block(generateSequence { it.getNextEntry() }) } - - abstract fun getInputStream(entryName: String): InputStream? +interface ArchiveReader : Closeable { + fun useEntries(block: (Sequence) -> T): T + fun getInputStream(entryName: String): InputStream? }